$Revision: 1.36 $
Fall 20111
Instructor: James Heliotis
The goal of this course is to introduce the student to a programming paradigm and an appropriate programming language chosen from those that are currently important in industry or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class.
With the approval of the program coordinator the course can be taken for credit more then once, provided each instance deals with a different paradigm and language.
This instance of the course will develop the students' skills in developing software for the C# programming language, and through this language, the Microsoft Visual Studio development environment and .NET execution environment. Various programming styles appropriate for C#, with an emphasis on design patterns, are an integral part of the course.
Experience and skill in programming in Java, or at least object-oriented features of C++, is essential. The beginning of the course will move quite quickly based on this assumption.
The text on file for this course is Visual C# 2010 How To Program . Like most books on C#, it is not a perfect fit, as it is too much about how-to-do-what-one-usually-does-without-thinking and not enough deep conceptual material. I will not be requiring that you buy the book, but I chose it because it appeared to be better as a reference than some other books in its genre. There are also additional on-line chapters available to you when you purchase the hard copy.
On the other hand, you should get by very well just by having a C# reference and by attending classes. There is C# 2010 by Joel Murach and also a new version of C# Precisely by P. Sestoft and Henrik I. Hansen due out in late 2011. As mentioned in the Reading Suggestions below, the Microsoft Developer's Network is a great on-line resource, too. Discussion boards on mycourses will also be provided so that we can all help each other out.
Lab assignments are to be determined. Depending on the difficulty, the number of labs may be adjusted.
There will be three short tests in this course. Study guides for them will appear in this section.
Please notify us if you have any you'd like added.
Axel Schreiner's Reading Suggestions
Command Line Options for Microsoft's csc
standard LINQ operations document (PDF)
C# Little Wonders by James Michael Hare
The WPF Tutorial by Christian Moser
The Mono Project: bringing .NET to other platforms
Many of the patterns covered in this course are from the seminal "Gang Of Four" book published in 1995. There is a good online resource for those patterns here.
Free eBooks! (more will be added)
I strongly encourage students to send me information on their favorite books and on-line resources.
Laboratory homework assignments are due on Thursdays and are announced at least one week in advance.
Three one-hour tests will be administered on weeks 3, 7, and 11 (finals week). Tests 2 and 3 may include material from the earlier tests.
All eight graded activities count equally toward your grade.
Contributions to the course, including participation in class and on the discussion forums, although not a formal part of the grade, could be an influence in borderline situations when the final grade is determined.
Those persons enrolled in 4005-714 must do an additional assignment. This involves a demonstration of a technology related to .NET or C# that we did not cover in class. It is a team project on which up to three students will be allowed to work, depending on the scope of the work.
Here are some possibilities:
The students must submit a proposal for their topic and plan of work to the instructor by email. When the plan is approved, the student or team will be added to a the presentation schedule in or around the 10th week of class (see below). After the presentation, the student or team will submit their written documentation (most likely slides, source code files, and instructions) for grading.
Here is the planned topic, test broken down by week number. This plan may change, but if it does it will show here and be announced by email ahead of time. Homework assignments will also be added here as the term progresses.
| Week# | Lecture Topics | Homework Assignments due Thursday of following week | Test Dates Wednesdays |
Pertinent Information |
|---|---|---|---|---|
| 1 | Course format and expectations Programming environments C# OO programming basics |
Hash Table | |
|
| 2 | Model-View-Controller Observer Design Pattern GUI programming -- windows forms and/or presentation framework Design patterns vs. Visual Studio Assemblies Language interoperation |
MSDN
entry on Observer Pattern Info on XAML |
||
| 3 | T9-like Texting | Test 3 | ||
| 4 | Functional Programming and Delegates Web applications and Silverlight |
|
Silverlight video | |
| 5 | Web services Factory patterns Events |
The Texting Problem on a Web Service | |
on
Silverlight and Web Services (simpler instructions that should suffice for HW 3) |
| 6 | LINQ, anonymous objects Catch up / Fill in gaps
|
|
|
|
| 7 | Nullable objects, structs | Test 2 | |
|
| 8 | Threads. Consumer/producer patterns |
|
|
|
| 9 | Serialization More design patterns | |
|
|
| 10 | Review Grad student presentations | |
|
|
| finals week | |
|
Test 3 (Nov. 16) | |
Possible additional topics, time permitting
| Students | Description | Presentation Date | Approved? |
|---|---|---|---|
| Ben Kaiser | XML Manipulations in C# | Monday Oct. 31 | YES |
| Thomas Tharp and Ramón García Perez | Using the Model-View-ViewModel architecture | Wednesday Nov. 2 |
YES |
| Asma'u Sani Mohammed |
Taking full advantage of LINQ in
a database application environment |
YES |
|
| Urvi Tanna | Developing Apps for Windows Mobile | Monday Nov. 7 |
YES |
| Rohit Agrawal |
Music Library web app with
ADO.NET and SQLServer |
YES |
|
| Divin Visariya and Hardik Nagda |
Using Remote Object Invocation
to Build a P2P File System |
YES |
|
| Alex Blank | The .NET Encryption Framework | Wednesday Nov. 9 | YES |
| Alberth José Montero Costa | The F# Programming Language | YES | |
| Alexander Lange |
The Mono Project |
YES |
|
| Michael Finegan |
Microsoft XNA Graphic Framework |
Monday Nov. 14 | NO |
| Gaurav Thawrani and Sharon Bhanu |
Microsoft XNA Game Studio |
YES |
|
| Fan Liangyi |
Managed vs. Unmanaged Code in .NET |
YES |
|
| Alex Canter |
Serialization in .NET |
YES |
I will normally be using your 7-character RIT account as an email destination. You are expected to check it at least daily.
Additional technical communication of a less urgent nature will be posted in mycourses on discussion forums.
© RIT Computer Science, 2011