CS105 - Programming Foundations
TIMETABLE | TEACHING MATERIAL |
Credits | 20 |
Level | 1 |
Semester | Semester 1, Semester 2 |
Availability | Available as an elective. |
Prerequisites | None |
Learning Activities Breakdown | 40 lectures and 20 2-hour practicals |
Items of Assessment | 4 |
Assessment | 30% coursework; 70% written exam Semester 1: 2 practical lab tests worth 7.5% each Semester 2: 2 practical lab tests worth 7.5% each The two-hour written exam at the end of semester 2 is worth 70% of the class mark. |
Lecturer | Leila Shafti, Martin Goodfellow |
Aims and Objectives
To provide the student with a solid foundation in the principles of computer programming. On completing this class the student should have the necessary skills to be able to design, build and test a small system in a high-level language (Java in the current incarnation of the class).
Learning Outcomes
On completion of the class, a student should be able to:
- Understand the program development process.
- Design, implement and test small software systems using a high-level language (currently Java) to conform to a specification.
- Demonstrate familiarity with a sophisticated interactive development environment (IDE).
Syllabus
The class aims to provide a good grounding in the basics of programming. An “objects-first” approach means that proper object-oriented programming concepts can be emphasised and explored from day one. The course is iterative, concept-based and project-driven – it covers the important programming ideas via a number of projects and extensive hands-on exercises. It does not attempt to provide a complete coverage of the language, but aims to introduce the basics which are then built on in later classes.
Main topics covered:-
- Background: Introduction to the purpose of high level languages and the development and compilation process.
- The fundamental concepts of programming:
- Key concepts of objects, classes, methods, parameters, data types etc.
- Defining classes – fields, constructors, methods, parameters, assignment.
- Defining methods – local variables, blocks, control structures (conditionals and loops).
- Inter- and intra- object communication – object references, method calls, parameter passing, return values etc.
- Collections of objects – arrays, arraylists (e.g.), iterators.
- Functional processing
- Abstraction mechanisms: Library classes and the API – introduction to the API, documentation, use of key library classes.
- Abstract data types – commonly used types such as Map, Set etc.
- More abstraction mechanisms – inheritance, interfaces, sub typing, polymorphism etc.
- External communication – e.g. input and output, GUIs, file handling and exceptions.
- Principles of program design and testing: Documentation (e.g. javadoc), basic testing principles, test automation using tools such as the xUnit family, debugging, basic Class diagrams.
- Development environments: Initially the class makes use of a relatively simple and supportive environment (such as BlueJ) to illustrate and emphasise the key concepts (classes, objects, method calls etc.) and support easy development. As the course progresses it will make greater use of a more sophisticated environment (such as Eclipse) that is also of use in the subsequent years of the course.
Recommended Reading
This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.
David J. Barnes & Michael Kölling, Objects First with Java – A Practical Introduction using BlueJ, Sixth Edition, Pearson, 2016, ISBN (Global Edition): 978-1-292-15904-1
Kathy Sierra and Bert Bates, Head First Java, Third Edition, O’Reilly, May 2022. ISBN-10: 1491910771 ISBN-13: 978-1491910771
Last updated: 2024-07-30 18:05:52