COM2001 - Advanced Programming Topics (Second Semester)
Lectures
- Lecture 1 - An introduction to the course. Why functional programming? Why complexity? Why proof? - [PDF] [slides]
- Lecture 2 - Asymptotic complexity analysis - [PDF]
- Lecture 3 - Algorithm analysis and design: divide and conquer - [PDF]
- Lecture 4 - Solving recurrences and the Master Theorem - [PDF]
- Lecture 5 - Proof by induction and structural induction - [PDF]
- Lecture 6 - Strong induction and imperative proof - [PDF]
- Lecture 7 - Abstract Data Types: specification and implementation - [PDF]
- Lecture 8 - Abstract Data Types: completeness, implementation, proof - [PDF]
- Lecture 9 - Algorithm analysis and design: dynamic programming - [PDF]
- Lecture 10 - Algorithm analysis and design: dynamic programming and optimisation - [PDF]
- Scanned lecture notes
(references to the two main textbooks are included at particular points in the lecture notes)
Mike Stanett's Notes
Mike Stannett's well-written notes, from previous years when he has lectured on COM2001, may help you with some of the concepts from the lectures. I do not cover exactly the same material as Mike does, and also I may use notation slightly differently, but you may in particular find the sections on inductive proof and abstract data types useful; in general sections 3 to 7 are those relevant for the course. N.B. for the exam the examinable material will be that covered in the lectures, and notation as used in the lectures takes precendent over that in Mike's notes:
Timetable
Reading weeks to work on the formative assessments will be announced according to progress made during the lectures (see also Office Hours). However due to research visits neither lectures nor office hours will take place on the following dates:
- Tuesday February 24th
- Tuesday March 10th
Lectures and reading weeks will be as follows (up to Easter vacation)
- Weeks 1-2: lectures
- Week 3: reading week and formative assessment
- Week 4: lectures
- Week 5: reading week and formative assessment
- Week 6: office hour (Tuesday) and feedback lecture (Thursday)
After the Easter vacation labs will replace reading weeks, and the course will conclude with a revision lecture
- Weeks 7-8: lectures
- Weeks 9-10: labs (Lewin lab)
- Week 11: lab (Tuesday) and feedback / revision lecture (Thursday)
- Week 12: revision week and office hours
Office Hour
Office hours will run during assessment preparation weeks, in the timeslots usually used by the lectures. James' teaching office is room 152 Regent Court. N.B. on the dates indicated under 'Timetable' above no offce hours will run.
Haskell Code
Haskell code from the lectures and assignments can be found below. I recommend ghci as a high-quality cross-platform Haskell interpreter
Complexity Visualiser
Not sure if your running time is polynomial or exponential? Not sure how O(n log n) relates to O(n2)? The Sheffield Complexity Visualiser can help you: (N.B. the CDF version will not work using the free Wolfram CDF Player; unless you have a copy of Wolfram CDF Player Pro or Mathematica then please use the Sage version instead)
Assessment
Assessment will be 100 percent by written examination. Two formative assessments with feedback will be set during the semester to prepare for the exam.
- Mock Assignment 1 - Submission deadline: 14:00 18th March 2015 at DCS Reception
- Mock Assignment 2 - Submission deadline (part 1): 12:30 30th April 2015 (part 2 will be self-marked)
- Examination
Course Texts
No one book encompasses the material taught during semester 2. However, two important references are Thompson (for Haskell) and Cormen, Lieserson, Rivest and Stein (CLRS, for algorithms). Both should be available in the library.
- Thompson, S. (1999) Haskell: the Craft of Functional Programming (second edition). Addison-Wesley.
- Cormen, T. H., Lieserson, C. E., Rivest, R. L. and Stein, C. (2001) Introduction to Algorithms (second edition, or later). MIT Press.
Just for Fun
James A. R. Marshall. Last modified on May 13th 2015