David Platt's Class at Harvard Extension


Harvard University Extension
CSCI-E237 Programming Microsoft .NET
Fall 2012
Taught by David S. Platt, M.E.

Location: 1 Story St, Room 303
First Meeting Monday, September 10, 7:40 PM


Recorded Lecture Videos

Live Stream
Email TA Jason (addr below) with questions during class


Preliminary Syllabus (subject to change )
Last Updated:
Sep 10, 2012

The notes for Classes 1 and 2 are online at this link (public, free)

This is an advanced course. You must have object-oriented programming skills equal at least to Henry Leitner's full year CSCI-E50a/b Introduction to Computer Science Using Java. You must also have at least a year of industry experience in combat programming. Your  must be fluent in either C# (ideally) or Visual Basic. All class sample code will be shown in C# unless a guest lecturer insists on presenting otherwise.

Because of the amount of material to cover, I've decided to start with a deeper lecture and a harder assignment. Therefore, you must have completed the following preparations BEFORE the first night's class:

1. Read and understand pages 13-40 from Chapter 2 of my book Introducing Microsoft .NET (Microsoft Press, 2003). You can download the chapter from this link.  These page numbers refer to the book from which the chapter was taken, and they're printed on each page of the chapter. The page numbers in the PDF viewer will be 1-27). The first night's lecture will use these concepts, and you need to have them already in your mind.

2. Perform Homework Assignment Zero, available at this link. This will get your development environment up and running and reinforce the concepts of the required reading. We will not collect or grade this homework, so you might be tempted to blow it off, but I wouldn't do that if I were you.  You will want this work completed before Assignment 1, which will be given out the first night.

Textbooks and Notes
This class covers a great deal of territory, so there is no single textbook that covers it all. A number of books will be mentioned in class, and electronic course notes will be provided for some of the lectures. These will be posted in the Files section of the discussion forum, described later in this syllabus.

Topics and Schedule
This list of topics is ALWAYS subject to change, even after the class starts, based on late-breaking or quickly evolving technologies, or availability of guest speakers.

Lesson # Date Topic
1 Sep 10 .NET Framework part 1
2 Sep 17 .NET Framework part 2
3 Sep 24 Memory Management and Garbage Collection
4 Oct 1 Threading
- Oct 8 No Class (Columbus Day Holiday)
5 Oct 15 Reflection
6 Oct 22 Windows Communication Foundation, part 1
7 Oct 29 Guest Lecture on Windows 8
8 Nov 5 Windows Communication Foundation, part 2
9 Nov 12 Microsoft Azure, the new cloud computing platform, part 1
10 Nov 19 Microsoft Azure, part 2
11 Nov 26 Kinect Platform
12 Dec 3 Using WPF (Windows Presentation Foundation) and Silverlight for Good and Not Evil
13 Dec 10 Guest Speaker: Jason Haley on Programming the Windows Phone
14 Dec 17 Why Software Sucks
- Dec 21  Last day to turn in programming assignments.

Homework and Grading

You learn how to program by programming. In this course, you will learn a great deal. You will work for the entire term on the same application, which is a distributed application simulating a police department.  You will start with a very basic app and add more and more features as the course progresses. At the end, you will have a serviceable app, which you can demonstrate to prospective employers when they ask how much you know about .NET. The advantages of such a cumulative assignment are many. The primary disadvantage is that if you fall behind, you are in big trouble. Try very hard not to do this.


This class is graded on programming homework assignments, of which there are 10.  These are designed to take approximately 15 hours of work for the median student in this class. Keep in mind that whatever the median time turns out to be, exactly half of you will take longer than that. The assignments for this class are currently being refined, and will be posted when they are ready.

Since the world of .NET is changing so quickly, particularly in the compact device and cloud arena, the homework assignments posted on the Web are necessarily in a state of some flux. I reserve the right to change them at any time up to the end of class of the night on which they are assigned. If you miss class, check the web site.

We will drop the lowest grade of the 10 graded homeworks, which means that you get to skip or seriously botch one of them. The arithmetic mean of the remaining 9 will be calculated, and your grade computed according to the table below:

The grading percentages are:

92-100% A   
90-91      A-   
87-89      B+ 
83-86      B
80-82      B-
77-79      C+          
73-76      C
70-72      C-
67-69      D+
60-62      D
< 60        E (failing grade)

It is likely that one at least one assignment you will score less than 100%. You may elect to fix bugs or add features and resubmit one homework assignment which will be regraded without penalty.

Each homework assignment has a specific due date, generally at the class following the one at which they are assigned. The homework is due before midnight on that day. You may turn in one assignment up to a week late without penalty. After that, late homeworks will be penalized 10% per week or part thereof. You need not notify anyone about this, it will be automatically tallied. In order to keep me from having to play Solomon, further extensions will only be granted in cases of serious life- or health-threatening emergency.


Homework shall be submitted via e-mail only. You will be assigned a TA to whom to submit your homework. Send e-mail to Jason Haley  (listed below) specifying your name, e-mail address, and primary .NET  language. He will assign you to a TA and give you your submission address. Use WinZip (www.winzip.com) or other zipper programs to combine all of your files and send them to the TA to whom you are assigned.  SCAN YOUR SUBMISSION FOR VIRUSES BEFORE SENDING. If your submission infects the TA's machine, your score on the assignment will be ZERO.


Hardware and Software

This course requires extensive programming homework. Harvard provides some .NET computers at its 53 Church St facility, but you will not want to depend on them for completing this course. You will want to have your own hardware and software development environment. Get the biggest meanest fastest PC you can find, with all the RAM and disk in the world. You'll need it all.

We recommend, and will only support, Windows 7. You can probably scrape by with Vista or some flavors of XP, but we will not be supporting them.

You will require Microsoft Visual Studio .NET 2010.  The free Express editions from Microsoft's web site will probably get you through it.  We reserve the right to require you to add service packs and updates as we discover the necessity. If you want to use any language other than C# or Visual Basic, you will have to consult with the instructor first, and we might not allow it. (For example, MicroFocus COBOL for .NET will be a hard sell.)

You will need an e-mail account and Web access. You will probably not find a dial-up modem line's performance satisfactory, so I'd try to get at least a cable modem.

Cell Phone Policy

All cell phones, beepers, pagers, and other audible communication devices shall be turned off before the beginning of class and shall remain off for the duration of class. Setting them to vibrate is NOT sufficient, as leaving to take a call and then returning is disruptive in and of itself. If you cannot do without your connectivity for two hours, then don't come to class.

If such a device emits any sort of noise for any reason other than a medical emergency, or if the carrier of such a device leaves the class to handle even a silent call, the carrier of said device shall be ejected from class for the remainder of that evening. A medical emergency is defined as a situation of a medical nature that is of such importance that you need to leave class immediately to attend to it. If that thing rings, or even buzzes, you're out of there for the night, one way or the other.

Contact Information

Due to suggestions received last year, we are taking steps to make faculty and TA's more easily available. Everyone is contactable by E-mail, and we urge you to use this channel. TA's may choose to provide their phone numbers to their individual students. I have explicitly instructed the TA’s that they are not to waste their time playing telephone tag. If you call them and they aren’t there, they will return your call once and then no more. Use e-mail, that’s what it’s for. The e-mail addresses of the staff are:

Name Position Email Alias* Email Domain* Dot*
David S. Platt Instructor cscie237 rollthunder com
Jason Haley Head TA jason jasonhaley com
Steve Aronis TA saronis datatecllc  com
Nancy Forero TA nancy.scuba yahoo com
Tomasz Logar Forum Support tomaz logar biz

*separated to avoid spam spiders

When you contact a TA for help with your homework, you must provide source code for them to look at. I have instructed them that they are not to waste their time trying to figure out problems unless they are looking at code. This will speed up problem diagnoses by one to three orders of magnitude. No one can diagnose problems over the phone based on a student's telephone or e-mail description of a problem, because the description is inevitably part of the problem. The bug isn't where you think it is; if it was, you'd have fixed it already. When choosing which pieces of code to send, err on the side of completeness.


A TA will provide a live discussion forum via an instant messaging program, on a schedule to be annound.

Course Home Page

This class has a home page. Its URL may change, but you can access it by going to my home page at http://www.rollthunder.com and picking the link for Harvard. Any changes posted in the "Updates" section of this page are officially incorporated into and made part of this syllabus by reference.

Internet Discussion Forum

To make it easier for you to talk to the TA’s and to each other, I am providing an Internet discussion forum on Yahoo Groups at this link. Only registered students can join. I'd suggest that you do this in advance, so you don't have to wait for your request to be approved when you need to post your first question. You can choose any nickname for use on the forum, but you must include your real name in your joining request so I can verify you against the class list. I won't approve your membership otherwise.

If you have a question about your own individual grading or administrative problems, contact your TA directly. Please use the forum as the entry point for all questions whose answers might be of general interest, such as questions on the homework. Because we have coverage of the forum spread out among different TA’s at different times, this will get you the fastest answer. If you send an individual e-mail message to me or to a TA, we might not check our mail that day and your answer may be delayed. Unless you are working a specific problem with a specific person, you will get the fastest service if you take whichever doctor is on call. Posting messages to the forum will also allow other students to benefit from the answers sent to you.

Occasionally there will be a topic for which I need to forbid forum discussion, generally when I assign a problem that has a very simple answer that requires a lot of searching. The learning experience is in the searching, not the final answer. These will be clearly identified as such in the homework assignments, at which time you will need to comply with them.

Please note: Tempers tend to run high in this class, especially around the fourth or fifth weeks when students fall behind on their homeworks and can’t see the end. E-mail is a cold medium; you don’t see a person’s gestures or facial expressions or tone of voice. Statements that would be polite in face-to-face conversation can very easily come across as nasty through e-mail. Please think carefully about what you are writing and how it might be perceived by the readers, and try to be nicer in the forum than you would be in person. Trust me, the impersonality of the medium more than evens it out.

Employers frequently find this list to be a good place to post messages looking for new hires. You may post a message for your company, subject to the following guidelines. Spare us the SPAM about "empowered employees enabling a dynamic challenging diverse workplace using state-of-the-art technology to produce innovative solutions …" Just tell us your company’s name and location, the type of products it makes, what the job would be doing and what it requires. And principals only, NO HEADHUNTERS UNDER PAIN OF IMMEDIATE AND PERMANENT EXPULSION FROM THE FORUM.

This forum is my own private property; therefore freedom of speech does not apply on it. Anyone whose actions are, in my own sole and absolute judgment, detrimental to the forum may be removed without warning or appeal.