OREGON INSTITUTE OF TECHNOLOGY
Software Engineering Technology
CST 407 Seminar – C# and the .NET Framework
Course Syllabus – Fall 2003
Instructor Information:
Name:
Phone: (503) 880-2486 Office Location: The Ether
Class Schedule:
Lecture/Lab: 14053 Friday 6:00p-8:50p Portland – CC1045
Class Web Site: http://www.computerzen.com/cst407
Textbook:
Required Text: C# Primer,
Optional References: Essential .NET,
Programming Pearls, Second Edition, Jon Bentley
The Pragmatic Programmer, Andrew Hunt and David Thomas
Software Tools:
Minimal development:
· The Windows .NET Framework SDK – Most work will happen at the command-line
· SharpDevelop – Open Source IDE written in C# w/source
Minimal web development (there may be small web projects, nothing major)
· Cassini – Simple ASP.NET Web Server (IIS not needed) w/source
Preferred development
· Visual Studio.NET Academic Edition – Great to have, but we won’t lean on it
For homework
· Lutz Roeder’s Reflector - Decompiler
· NUnit – Testing framework
Philosophy and Prerequisites
This class is a 400 level class and while it may look easy (most syllabi do) I will have high expectations. C# is a 3rd generation ‘C’ family language. This class assumes you’ve programmed in some language that includes a if-then construct of some kind. An understanding of Object Oriented design will be important.
For those of you who feel advanced now and think this class may be too easy, I will ratchet up the difficulty after class as far as you’d like. I will stay as long after class talking tech as you like.
Coding is an art and all art has its associated literature. I expect you to read as much code as you write. Every week, bring in a snippet (10-20 lines) of someone else’s code that you’ve found on the web. Two places to start are www.gotdotnet.com and www.codeproject.com. Email the cool snippets to me and we’ll discuss some of them in the last 30-45 minutes of class.
.NET is very powerful, but it can turn bad programmers into very bad programmers very quickly.
Homework should be zipped (just code, no bin or obj folders) and sent to my email address before
We’ll be writing Unit Tests for all our homework programs using NUnit 2.x. Include them with your homework.
Tentative Outline:
Week |
Date |
Topic(s) |
Text |
HW/Lab Assignment |
DUE Date |
1 |
10/3 |
Course overview, class logistics. The Gist of .NET Files and Compiling Decompiling Namespaces Classes Assemblies Value Types and Reference Types Intro to NUnit |
Ch1 |
Visit Class web site. 1. Print syllabus. 2. Purchase book. 3. Write HelloDOTNETWorld.exe without the IDE, compile it, and successfully email the code to me following the guidelines above. 4. Write an NUnit Test for HelloWorld (4 points – the only freebie) |
Next Fri |
2 |
10/10 |
More on deployment C# keywords Garbage Collection Arrays Strings and Formatting System.Collections (brief) Exceptions |
Ch1 |
Read Chapter 1. 1. Create and populate a multidimensional array of value types 2. Spin through the array and pretty print their contents to the console. 3. Write tests (4 points) |
Next Fri |
3 |
10/17 |
Class Design Constructors Private/Public This, static, const, readonly Delegates Passing by ref and value Overloading, function and operator Casting Debug/Trace ConfigFiles |
Ch2 |
Read Chapter 2 1. Create a class Car with and Engine, Windows, Wheels 2. Create behavioral methods on all classes 3. How will you structure your class? Does the Car contain Wheels? 4. Test it (4 points) 2 points Extra Credit: 1. Write a C# console app that prints out true or false if a year is a leap year. Ex: leapyear.exe 1996 outputs “true” How many lines of code did it take? Why? 2. Test it |
Next Fri |
4 |
10/31 |
OOPapolooza Class Hierarchies Abstract Single Inheritance New and base Overriding Exceptions Type/typeof Binding/Activator |
|
Read Chapter 3 and 4 1. Extend your Car and create Planes and Trains. 2. How does OOP help? How does it Hinder? 3. Test it (4 points) 1. Dynamically instantiate a class from a Fully Qualified Assembly Name in your app.config file 3. Test it (4 points) |
Next Fri |
5 |
11/7 |
Exploring the System namespace System.IO System.Net System.Data Threading |
Ch5 |
Study for Midterm Homework: TBD (4 points) Homework: TBD (4 points) |
Next Fri |
6 |
11/14 |
All XML all the Time System.Xml Everything you need to know about Xml in 3 hours. J |
|
Take Midterm (90 minutes) 1. Probably Multiple Choice (20 points) Homework: 1. Take a Books Xml file I’ll give you and read it into memory 2. Setup arbitrary searching like findbooks.exe “author = ‘s*’” 3. Do it with XmlTextReader 4. Do it with XmlDocument 5. Do it with XPathNavigator (4 points) |
Next Fri |
7 |
11/21 |
C# applied to WinForms |
|
Homework: TBD (4 points) |
Next Fri |
8 |
11/28 |
C# applied to WebForms |
|
Homework: TBD (4 points) |
Next Fri |
9 |
12/5 |
The CLR Attributes Reflection Inside Serialization Interop/PInvoke |
|
Final: TBD You’ll be given a spec, an expected input and expected output and return code for a program using what we’ve learned, including test cases on 12/12. Perhaps write TicTacToe? You’ll have 7 days. |
Next Fri |
10 |
12/12 |
TURN IN FINAL |
|
TURN IN FINAL. If you like, we’ll have a formal “egoless’ code review and I’ll grade them (anonymously) on the projector and we’ll discuss them. |
|
Class Scoring:
First, the obvious. 100 Points possible.
A >=90
B >=80
C >=70
D >=60
F < 60
Midterm – 20 points – on 11/7 (in class)
Final – 40 points – on 12/12 (take home, given 12/5)
Homework – 10 programs @ 4 points each, gives 40 points, one or more a week for ten weeks.
Homework programs will be graded on:
1. Correct use of Basics (foreach, classes, namespaces, BCL libraries)
2. Appropriate Use of OOP (no gratuitous object hierarchies, please)
3. Robustness (did you test it?)
4. Attention to Detail (did you think?)
Extra Credit: Elegance/Flair (my discretion)
Updated Link to this post 10:54:34 PM # comment [] trackback []
Copyright 2003 Scott Hanselman
Theme Design by Bryan Bell