Last updated: 2 May 2014

Home Page for CM10228
Principles of Programming 2   2014

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.

Important note on Labs:  This course has labs from the first week, but not before the first lecture.  We try to ensure that all labs are scheduled 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 few 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 2014 lecture notes will be updated on the below grid more or less on the day they are given.   Older lecture notes are mostly from 2013.  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!  It's also possible that lectures or lecture order may change, or even coursework dates.  Be certain to read the news forum on moodle regularly.

 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
Lab: lists in different languages
Coursework 1 handed out
4  Feb
Sorting,  Searching & Complexity
Logs & Trees, Sorting & The Big O
Support for Coursework 1

11 Feb

Believe in Space: Searching, Hashing & Structure.
Searching & Hashing
, Space, Class & Interface
Support for Coursework 1, Due Friday at 11pm
18 Feb

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

Coursework 3 handed out
25 Feb

Mayhem & Pictures
When Threading Goes Bad;  Intro to GUIs; Components, Layouts and Panes Galore;

Coursework 1 handed back
4 Mar
Double lecture Thursday! (3 hours of lecture)

Reading Week

Getting in Synch
 Intro to NetworkingNetworking, Protocols & the Internet
Lab: threading and networking
Coursework 2 handed out.
18 Mar

Applications of Search (AI).
Intelligent Search, Searching in Advance
span style="color: rgb(204, 0, 0);">Support of Coursework 2 & 3
Coursework 2 Due Friday at 11pm
25 Mar

More Learning
More Searching & Learning, Intro to Pattern Matching?
  CW 2 marked & debugged in lab; 1 Apr
May be no lecture Thursday.
AI, Ethics & Law
Applets & Java's Sordid History;

Support of Coursework 3, Due Friday at 11pm 8 Apr
No lecture Tuesday, optional robot lecture followed by mandatory IP lecture Thursday.
The Dark Side of Programming
Databases & Reliability;   Intro to SQL
Demo & partially mark CW3 in lab 15 Apr

Revision lecture Tuesday or Thursday
practice exam!
Emergency labs for those who missed marking
7 May

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 be available in the Library, and may be in 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