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
Assessment30% coursework; 70% written exam

Weekly sets of exercises are set and 4 sets of selected exercises are presented for marking in the lab sessions twice per semester. Together these contribute to 10% of the total mark for the module. There are also four class tests, held towards the middle and end of each semester. These tests are practical programming exercises which require the students to write code  within a test time period during lab sessions and are also marked on presentation at the end of the period. Together these contribute towards a total of 16% of the mark for the module. Additionally, the consolidation week in January will be utilised and one or more significant exercises set - to be assessed on demonstration during semester 2 week 1 labs. This will contribute 4% towards the class mark.

The two-hour written exam at the end of semester 2  is worth 70% of the class mark. 

LecturerIsla Ross, 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.
    • 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: 2022-10-06 16:02:27