The Guide to
Programming for Computer Scientists
(CS118)
Term 1, XXXXXXXXXX
James Archbold
Contents
1 Preface 7
1.1 What is this course all about? . . . . . . . . . . . . . . . . . . . XXXXXXXXXX7
1.2 Course structure . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX7
1.2.1 Lectures and seminars . . . . . . . . . . . . . . . . . . . XXXXXXXXXX7
1.2.2 Coursework . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX8
1.2.3 Adding it up . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX9
1.3 Computing support . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX9
1.3.1 User codes . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX9
1.3.2 Course web page . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX9
1.3.3 Java sources . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX10
1.4 Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX10
1.5 Practicalities . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX11
1.6 And if it all starts to go wrong? . . . . . . . . . . . . . . . . . . XXXXXXXXXX11
1.7 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX11
2 Getting Started 13
2.1 UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX13
2.1.1 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX13
2.1.2 Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX13
2.1.3 The Internet . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX14
2.1.4 Editing files . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX14
2.2 Editing, compiling and running Java code . . . . . . . . . . . . XXXXXXXXXX14
2.2.1 Some easy programs . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX15
2.3 Some UNIX commands . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX15
2.4 Web-based course material . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX16
2.5 What next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX16
3 An Introduction to Programming 17
3.1 Designing computer programs . . . . . . . . . . . . . . . . . . . XXXXXXXXXX17
3.1.1 The Diagram . . . . . . . . . . . . . . . . . . . . . . . . XXXXXXXXXX18
3.1.2 Writing your own specifications . . . . . . . . . . . . . . XXXXXXXXXX20
3.2 Building computer programs . . . . . . . . . . . . . . . . . . . XXXXXXXXXX21
3.2