Last updated: 15 March 2012

Home Page for CM10228
Programming Ib   2012

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:  Until Spring break, a week's labs are considered to start after the first lecture Tuesday morning.  So Monday labs have the content of the previous week. 

Unlike Programming Ia, there will be no semi-mandatory laboratory exercises in this course.  Instead, their are four separate courseworks which will be due every few weeks.  All of these will be marked within a couple of weeks so you get fast feedback.  The exam will probably consist of answering short questions (more on this later).

Note on old Lecture Notes The 2012 lecture notes will be updated on the below grid more or less on the day they are given.   Older lecture notes are mostly from 2011.   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!

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

First Lecture
Special notes
1
Programming, languages, data structures, and algorithms.
Reinventing the Wheel, Algorithm Examples: Sorting
Lists in different languages
7 Feb
2
Sorting,  Searching & Complexity
Logs & Trees, Sorting & The Big O
Pair Programming
Coursework 1 handed out
14 Feb

3
Believe in Space: Searching, Hashing & Structure.
Searching & Hashing
, Space, Class & Interface
Support for Coursework 1 21 Feb
Lectures at 11:15 & 12:15 Tuesday!
4
Going Non-linear.
Errors, Exceptions and Nonlinear Control
; Concurrency and Threading

Support for Coursework 1
28 Feb

5
Getting in Synch.
When Threading Goes Bad
; Intro to Networking,
Coursework 1 Due
Coursework 2 handed out

6 Mar

6
Networking & Protocols
How to Network,
Internet Protocols
Support for Coursework 2 13 Mar

7
Graphical User Interfaces.
Intro to GUIs, Components, Layouts and Panes Galore
Coursework 2 due, marked/debugged in lab;
Coursework 3 handed out
20 Mar

8
Applications of Search (AI).
Intelligent Search, Searching in Advance
Support of Coursework 3 29 Mar
Both lectures on Thursday!

Spring Break
Coursework 3


10
IP (The Real World).
Applets & Java's Sordid History
Support of Coursework 3 17 Apr
No lecture Thursday!
11
Relational Databases & SQL.
Django (2 hour lecture)
Coursework 3 due; demo in lab 24 Apr

12
Relational Databases:  Reliablity & Hardware.
Databases & Reliability
Django (optional lab)
1 May
Revision lecture Thursday.

revision week

8 May
possible revision with tutors

If you want to meet with Dr. Bryson, schedule an appointment during her tutee office hours.  Do not email her! unless it is really very urgent & a tutor can't help you.  Note that extension requests go to the Director of Studies, not to Lecturers.

Is there a text? (and other resources)

The course material you are responsible for in the exam is all present in the notes above.  There is no single textbook for this course. However,  I recommend a number of texts that might help you better understand the material in lecture 3.  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.

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 a lab.  But if you are bored, you may want to play with Robot competitions.


page author: Joanna Bryson