The lecture notes and example programs from Computer Science 1 are available on this page. We put the notes up as soon as we can. Spare hard copies should always be available from the filing cabinet in the workroom in Appleton Tower Level 3 lab, or from the ITO in Room 1502, JCMB. (If the filing cabinet has run out of some note, please send a message to ito@informatics.ed.ac.uk to let them know, thanks).

For an outline of forthcoming topics, see the lecture outline.

For overheads used during Murray Cole's lectures, look here.

For overheads used during Javier Esparza's lectures, look here.

CS1Bh lectures Example programs
1 An Overview of Algorithms
2 Spelling Correction /group/teaching/cs1/Java/Recursion
3 Greedy Algorithms /group/teaching/cs1/Java/Greedy
4 Dynamic Programming /group/teaching/cs1/Java/Dynamic
5 Coin Changing /group/teaching/cs1/Java/CoinChanging
6 Induction and Invariants
7 Java Byte Code
8 Compiling Expressions /group/teaching/cs1/Java/CompilingExpressions
9 Development and Testing
10 Designing Systems
11 Interfaces and Abstract Classes /group/teaching/cs1/Java/InterfacesAbsClasses
12 Graphics /group/teaching/cs1/Java/Graphics
13 Event-driven Programming /group/teaching/cs1/Java/Events
14 Applets /group/teaching/cs1/Java/Applets
15 Client/server computing /group/teaching/cs1/Java/ClientServer
16 Case Study: Client/Server /group/teaching/cs1/Java/ClientServerCS
17 Debugging Java Code
18 Propositional Logic
19 Predicate Logic
20 Limits and how to avoid them
21 Exceptions
22 Software Engingeering with Java
23 Machines
24 Machines, continued
25 Machines, concluded
26 A Glimpse of Standard ML /group/teaching/cs1/Java/ProgLangs-ML
27 A Furtive Glance at C /group/teaching/cs1/Java/ProgLangs-C
28 Computer Security
29 CS1Ah Revision Slides
30 CS1Bh Revision Slides, Part 1
CS1Ah lectures Example programs
0 Introduction to Course (slides)
1 Science and Engineering
2 An Introduction to Objects
3 Introducing Java /group/teaching/cs1/Java/Introduction
4 Types and Java /group/teaching/cs1/Java/Types
5 Expressions
6 Control structures in Java /group/teaching/cs1/Java/Control
7 Introduction to Software Engineering
8 Anatomy of Java programs /group/teaching/cs1/Java/Anatomy
9 Java: Classes and Objects
10 Inheritance and Polymorphism
11 Case Study: Modelling Using Objects /group/teaching/cs1/Java/CaseStudyModelWithObjects
12 Finite State Machines 1
13 Finite State Machines 2
14 Describing Finite State Machines
15 Case Study: Cruise Control /group/teaching/cs1/Java/CaseStudyCruiseControl
16 Arrays and Bounded Iteration /group/teaching/cs1/Java/JavaArrays
17 Case Study: Using Arrays /group/teaching/cs1/Java/UsingArrays
18 Logical Expressions
19 Case Study: Supporting Queries /group/teaching/cs1/Java/SupportingQueries
20 Recursion and Stacks /group/teaching/cs1/Java/RecursionAndStacks
21 Linked Lists /group/teaching/cs1/Java/LinkedLists
22 Lists, sets and iterators /group/teaching/cs1/Java/ListsAndIterators
23 Java Collection Framework
24 Trees /group/teaching/cs1/Java/Trees
25 Search Trees /group/teaching/cs1/Java/SearchTrees
26 Validation and Verification
27 Sorting
28 Sorting faster
29 Streams and Exceptions /group/teaching/cs1/Java/JavaStreamsAndExceptions
30 Java: Methods and parameters
31 CS1Ah Revision (slides)
A note about printing: if you want to print one of these notes out, notice that the margins are formatted for 2up printing, so you should use the -Z2up option on DICE machines. Also, in the Acrobat Reader, be sure to set the page size to A4 in File -> Page Setup before printing.
Problems reading PDF: If you are having problems with these files, please read this note about Acrobat Reader bugs.