Syllabuses - UG

CS105 - Programming Foundations

TIMETABLETEACHING MATERIAL
Credits20
Level1
SemesterSemester 1, Semester 2
AvailabilityAvailable as an elective.
PrerequisitesNone
Learning Activities Breakdown40 lectures and 20 2-hour practicals
Items of Assessment4
Assessment30% 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. 

LecturerLeila 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:

  1. Understand the program development process.
  2. Design, implement and test small software systems using a high-level language (currently Java) to conform to a specification.
  3. 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:-

  1. Background: Introduction to the purpose of high level languages and the development and compilation process.
  2. 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.
  3. 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.
  4. 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