Instructor: Adam Dingle
Programming II will build on our knowledge from Programming I. The course has several goals:
We will learn the fundamentals of the C# language and
object-oriented programming. We’ll study features shared by C# and
other modern programming languages, such as classes, inheritance,
interfaces, generics and exceptions. We will also study the C#
collection class hierarchy and will learn to build our own
collection classes.
We will not attempt to cover every
feature of C# 7 or go deeply into its class library; for that, you
can take NPRG035 C# Language and .NET Framework, offered in the
winter term.
We’ll study various algorithms, data structures and programming techniques including hash tables, large numbers, expression trees, combinatorial search, dynamic programming, graph algorithms, game-playing algorithms, and recursive-descent parsing.
We’ll learn how to build larger programs using object-oriented design.
We will discuss additional practical topics, depending on how much time we have toward the end of the semester. These may include graphical user interfaces, interpreters, network programming, multi-threaded programming, informed (heuristic) searching, and/or version control systems.
The weekly lecture for this class takes place every Tuesday from 9:00 - 10:30 in room S10.
The weekly lab/tutorial follows the lecture every Tuesday from 12:20 – 13:50 in the laboratory SW2.
I also hold a mentoring session every week where we work through additional exercises together. These sessions happen on Fridays from 13:00 - 14:30 in room S510 .
To successfully complete this class, you must:
Complete a number of programming exercises through the semester, which I will assign weekly. You can submit your solutions to ReCodEx. You will need to earn at least 70% of the possible points for these exercises.
Write a program in C# as a semester project. Your program should accomplish something that is interesting, cool, or fun and should be more substantial than your semester project for Programming I. A typical project for Programming II might be 400-600 lines long. Here are some project ideas. Please send me a one-paragraph project proposal by Sunday May 5th. Send me a first working version of your project by Sunday June 16th. The final version of your project is due by Wednesday June 26th.
Take an exam at the end of the semester.
Regularly attend the lectures and tutorials and participate in class.
Michaelis and Lippert, Essential C# 7.0 (Addison-Wesley, 2018)
Sells and Weinhardt, Windows Forms 2.0 Programming (Addison-Wesley, 2006)
Cormen et al, Introduction to Algorithms, Third Edition (MIT Press, 2001)
Tools for editing and compiling C# code
This is a rough plan for this class; it will probably evolve as the semester goes on.