Instructor: Adam Dingle
Programming 2 will build on our knowledge from Programming 1 and Introduction to Algorithms. The course has several goals:
We will learn the C# language and expand our knowledge of object-oriented programming. We’ll study features shared by C# and other modern languages, such as static typing, 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# 9 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 and programming techniques including dynamic programming and game-playing algorithms.
We’ll learn about event-driven programming and graphical interfaces, and will discuss how to build larger programs using object-oriented design.
If time permits, we may also discuss other topics such as regular expressions, recursive-descent parsing, multithreaded programming, network programming, and/or writing interpreters.
The weekly lecture takes place every Monday from 10:40 - 12:10.
The weekly tutorial happens every Thursday from 14:00 – 15:30.
All lectures and tutorials will occur over Zoom for at least the beginning of the semester.
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. Any points that you earn over 85% (up to a maximum of 15%) will be applied as bonus points to your exam score when you take the exam.
Write a program in C# as a semester project. Your program should accomplish something that is interesting, and should be more substantial than your semester project for Programming 1. It should be written in an object-oriented way, making good use of classes and other features we have learned in this course. A typical project for Programming 2 might be 300-500 lines long. Here are some project ideas. Please send me a one-paragraph project proposal by Sunday, May 2nd. A first working version of your project is due by Sunday, June 20th. A final version is due by Sunday, June 27th.
Take an exam at the end of the semester.
Regularly attend the lectures and tutorials.
Michaelis and Lippert, Essential C# 8.0 (Addison-Wesley, 2020)
Cormen et al, Introduction to Algorithms, Third Edition (MIT Press, 2001)
C# Language Reference (Microsoft)
This is a rough plan for this class; it will probably evolve as the semester goes on.
To access any of the videos below, use our Zoom meeting ID and passcode (not your CAS login) as the username/password.