Last updated: 25 April 2013

Home Page for CM10228
Principles of Programming 2   2013

Dr. Joanna Bryson

The schedule on this page is subject to change.  This page is provided as a resource, mostly so you can find lecture notes and problem sets.  There is also a moodle page associated with this course, which contains forums & will be where you submit your coursework.

Note on Labs:  Due to the Snow, there are no labs first week this year.  Labs should all be after the first lecture. 

Unlike CM10227, you are not marked for semi-mandatory laboratory exercises in this course.  Instead, there are three separate courseworks which will be due every few weeks.  All of these will be marked within a couple of weeks of submission so you get fast feedback.  The exam (worth half your mark) will consist of answering short questions on the lecture material.  There will not be much code on it, and none that you have to write yourself.  It is, nevertheless, hard, so keeping up with the lectures is a very good idea.

Note on old Lecture Notes The 2013 lecture notes will be updated on the below grid more or less on the day they are given.   Older lecture notes are mostly from 2012.   You can always check the age of a file by looking at the date in it (usually at the bottom).  Occasionally pages get updated after the lecture if someone finds a bug!

 Lecture Topics (exact organization still subject to change)
Lab Topics & Coursework

First Lecture
Special notes
Programming, languages, data structures, and algorithms.
Reinventing the Wheel, Algorithm Examples: Sorting
labs cancelled!
7 Feb Snow days...
Sorting,  Searching & Complexity
Logs & Trees, Sorting & The Big O
Lab: lists in different languages
Coursework 1 handed out
12 Feb

Believe in Space: Searching, Hashing & Structure.
Searching & Hashing
, Space, Class & Interface
Support for Coursework 1 19 Feb

Going Non-linear.
Errors, Exceptions and Nonlinear Control
; Concurrency and Threading

Support for Coursework 1, Due Friday at 11pm
26 Feb

Networking & Protocols.
Intro to Networking, Networking, Protocols & the Internet
5 Mar

Getting in Synch & Painting Pictures.
When Threading Goes Bad; Intro to GUIs
Support for Coursework 2,
Due Friday at 11pm
12 Mar

Graphical & Legal Details.
Components, Layouts and Panes Galore;
Applets & Java's Sordid History
 CW 2 marked/debugged in lab;
Coursework 3 handed out
19 Mar

Spring Break
Coursework 3

Applications of Search (AI).
Intelligent Search, Searching in Advance
Support of Coursework 3 11 Apr
both lectures on Thursday
More AI
Intro to Pattern Matching;  AI, NI & Society
Support of Coursework 3, Due Friday at 11pm 16 Apr

The Dark Side of Programming
Databases & Reliability,
Intro to SQL
Demo CW3 in lab 23 Apr

Revision lecture Thursday
practice exam! Also, Django lecture from Dan Hilton (or maybe previous week)
Emergency labs for those who missed marking
30 Apr

revision week
no events

If you want to meet with Dr. Bryson, schedule an appointment during her tutee office hours.  Please try not to email her! unless you find a broken link or other error in the lecture notes, or it is something a tutor can't possibly help you with.  Note that extension requests go to the Director of Studies, not to Lecturers.  If you do email Dr. Bryson (or any lecturer) you should read these helpful tips about how to email a professor (US for lecturer) first.

Is there a text? (and other resources)

The course material you are responsible for in the exam is all present in the notes linked above.  There is no single textbook for this course. However, in lecture 3 I recommend a number of texts that might help you better understand the material.  Note that a number of these are available online free, at least if you are logged in at Bath or through VPN to Bath links are provided on the lecture 3 notes.  These books are also available in the Library and the campus bookstore.

In 2011 many students had trouble understanding static typing.  These notes on static seemed to help.

Stanford has all of their introductory computer science lectures on line. The first one, Programming Methodology, is in Java. The second one, Programming Abstraction, has more of the content in this course e.g. more complex sorts. That the examples are in C++ shouldn't be too big of a problem (and if it is, there's a lecture about the differences between C++ and Java at the beginning). Wikipedia actually describes most of the algorithms covered in class extremely well.  There are also little animations so most of you can watch the sort algorithms work. Here's some more animations. Here are some excellent notes on data structures, sorting, searching and complexity from Aukland. Of course, sorting algorithms can be quite boring until you add sound effects.

In case you are wondering, the IDE I use (which you'll see a couple times in class) is eclipse.  It is available on the BUCS machines.

I thought this was fun, but hardly anyone ever played with it so it's no longer an assigned tutorial.  But if you are bored, you may want to play with Robot competitions.

page author: Joanna Bryson