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# 10 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, and/or writing interpreters.
The weekly lecture takes place every Monday from 12:20 – 13:50 in room N2 in Troja.
There are two tutorial sessions:
every Tuesday from 10:40 – 12:10 in room N8 in Troja (teacher: Martin Pergel)
every Tuesday from 12:20 – 13:50 in room N8 in Troja (teacher: Adam Dingle)
To successfully complete this class, you must:
Complete a number of programming exercises through the semester, which your tutorial teacher will assign weekly. You can submit your solutions to ReCodEx.
In Adam Dingle's tutorial, you will need to earn at least 70% of the possible points for ReCodEx exercises. Any points that you earn over 85% (up to a maximum of 15%) will be applied as bonus points to your exam score. For example, if your ReCodEx score is 90%, then you will have a 5% exam bonus.
In Martin Pergel's tutorial, you will need to earn at least 50% of the possible points for ReCodEx exercises. Any points that you earn over 70%, divided by 2 (up to a maximum of 15%) will be applied as bonus points to your exam score. For example, if your ReCodEx score is 80%, then you will have a 5% exam bonus.
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 your tutorial teacher a one-paragraph project proposal by Sunday, April 24th. A first working version of your project is due by Sunday, June 5th. A final version is due by Sunday, June 12th.
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)
Ian Griffiths, Programming C# 8.0 (O'Reilly, 2019) (also at ebooks.com)
Cormen et al, Introduction to Algorithms, Third Edition (MIT Press, 2001)
C# Language Reference (Microsoft)
.NET API 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.