Harvard University Extension
CSCI-E237 Programming Microsoft .NET
Taught by David S. Platt, M.E.
1 Story St, Room 303
First Meeting Monday, September 10, 7:40 PM
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.
FIRST NIGHT PRE-REQUISITES
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
Introducing Microsoft .NET (Microsoft Press, 2003). You can download the chapter from
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 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
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
Topics and Schedule
WARNING: 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.
||.NET Framework part 1
||.NET Framework part 2
||Memory Management and Garbage Collection
||No Class (Columbus Day Holiday)
||Windows Communication Foundation, part 1
||Guest Lecture on Windows 8
||Windows Communication Foundation, part 2
||Microsoft Azure, the new cloud computing
platform, part 1
||Microsoft Azure, part 2
||Using WPF (Windows Presentation Foundation)
and Silverlight for Good and Not Evil
||Guest Speaker: Jason Haley on
Programming the Windows Phone
||Why Software Sucks
|| Last day to turn in programming
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.
ALL STUDENTS ARE RESPONSIBLE FOR READING,
UNDERSTANDING, AND COMPLYING WITH THE ACADEMIC RULES AND REGULATIONS
PUBLISHED IN THE EXTENSION SCHOOL CATALOG, INCLUDING BUT NOT LIMITED TO
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:
< 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.
ANY OTHER CAUSE,
INCLUDING BUT NOT LIMITED TO BUSINESS PROBLEMS OR WORKLOAD, TRAVEL, OR
COMPUTER BREAKDOWNS, DO NOT, REPEAT NOT, COUNT, SO DON'T
ASK. WEATHER-RELATED EXTENSIONS SHALL BE AUTOMATICALLY GRANTED IF AND ONLY
IF CLASS IS OFFICIALLY CANCELLED BY HARVARD.
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
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.
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:
|David S. Platt
*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
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.