PROGRAMMING FUNDAMENTALS - 2023/4
Module code: COM1027
This module will provide an introduction to the fundamental concepts of object-oriented programming using Java. We will start with understanding the basic data types and programming structures. We will introduce what objects and classes are and then introduce more advanced datatypes, programming structuring techniques and key principles of object-oriented programming. The module will cover:
- how to develop programs from high level design diagrams
- the importance of testing your program and how testing goes hand in hand with programming.
We will use appropriate tools and libraries, such as Eclipse, JUnit and Git to provide industrial quality tools to support the module.
Computer Science and Electronic Eng
KAZAMIA Stella (CS & EE)
Number of Credits: 15
ECTS Credits: 7.5
Framework: FHEQ Level 4
JACs code: I320
Module cap (Maximum number of students): N/A
Overall student workload
Workshop Hours: 2
Independent Learning Hours: 74
Lecture Hours: 22
Tutorial Hours: 10
Laboratory Hours: 22
Guided Learning: 10
Captured Content: 10
Prerequisites / Co-requisites
Indicative lecture content includes:
- Motivation, explanation of tools going to use, overview of coursework, example of good and bad code
- Primitive Datatypes
- Simple Control flow
- Conditional statements (if, then, else)
- Loops (for, while, do)
- Introduction to Classes and Objects
- Advanced Datatypes
- Enumerated Types
- Working with classes and UML class diagrams
- Coding best practice
- Coding style
- Testing with JUnit
- Collections using Lists and Maps
- Superclasses and subclasses
|Assessment type||Unit of assessment||Weighting|
|Practical based assessment||WEEKLY LAB ASSIGNMENTS 1||20|
|Practical based assessment||WEEKLY LAB ASSIGNMENTS 2||20|
|Coursework||COURSEWORK PROJECT (INDIVIDUAL)||60|
The assessment strategy is designed to provide students with the opportunity to demonstrate that they have achieved the module learning outcomes.
Thus, the summative assessment for this module consists of:
- Lab assignment tasks to be completed weekly, which are submitted at two points in the Semester.These address LO1, LO2, LO3, LO4, LO5 and LO6
- An individual coursework which takes a given UML class diagram and method description. The student will be expected to implement the required functionality in Java and test its function. A student will also be required to write unit tests. Feedback will be given on the quality of the solution, including good coding practice, testing and execution. This addresses LO1, LO2, LO3, LO4, LO5 and LO6. .
All the learning outcomes apply in each assessment. The difference between the assessments is the Java concepts that will be covered in each and the depth in which they are covered. The first assessment covers the basic structuring techniques of Java programming whereas the second and third assessments include more advanced structuring techniques.
Formative assessment and feedback
The formative assessment consists of:
- Online interactive quizzes are used extensively in the lectures with each lecture consisting of a number of slides explaining the theory and practical examples, followed by a number of slides gauging the students’ understanding. The answers are discussed when necessary, eg if a high proportion (more than 25%) of the students got the answer wrong.
- Solutions to lab activities (not those assessed) are explained during the lab session and provided to the students as part of their preparation for the assessment.
- Use of the self-study weekly diagnostic tests on line in SurreyLearn with immediate feedback on a student’s understanding of key concepts, this provides the opportunity for weekly formative feedback.
- Equip students with the fundamental knowledge of basic data types and program statements.
- Develop the student's understanding of the basic concepts of object-oriented programming and how to test their programs in using an integrated approach.
- Engage learning Java through a hands-on practical approach to enable students to apply their skills to different scenarios
- Reinforce Java learning opportunities through self-diagnostic support.
|1||Write syntactically correct code, and compile, execute, debug and test the resulting computer program;||CPT|
|2||Understand the basic concepts of object-oriented software as implemented in Java||KCT|
|3||Know when and how to apply native and class data types, and program control statements;||KCT|
|4||Interpret UML class diagrams in order to implement object-oriented software;||KP|
|5||Understand the importance of constructing maintainable code by using good design and code conventions;||KCT|
|6||Apply object-oriented testing to validate their code.||KPT|
C - Cognitive/analytical
K - Subject knowledge
T - Transferable skills
P - Professional/Practical skills
Methods of Teaching / Learning
The learning and teaching strategy is designed to:
Develop a student’s practical ability to write Java programs and test them, through direct lectures, practical sessions, and through facilitated independent learning. The skills gained on this module are directly transferable to all other modules on the programme, and to the Computer Science profession.
This module is also supported an additional 1 hour tutorial for those students who have been identified, using the diagnostic tests, as needing extra support. The independent learning is supported by weekly self study tests that are available on SurreyLearn, through the discussion boards that support each assessment and also general discussions for the module. Drop-in surgery hours may also be run to provide additional coursework support. The solutions to the laboratory activities (not those assessed) are made available to the students following each session and released via SurreyLearn; thus providing further support for the independent learning.
The learning and teaching methods include:
- Lectures (2h/week) using online interactive quizzes to gauge the students’ understanding
- Practical sessions (2h/week) using Eclipse, Java, JUnit and Git. Each practical lab session will provide direct support and elaborate on the topics covered in order to use Eclipse, JUnit and Git to support the application of the topics covered.
- Tutorial sessions (1h/week) interactive in the laboratory using directed exercises.
- Independent learning (7h/week), e.g., revising the lecture notes, completing the coursework, going over lab solutions, completing the self-study tests online, preparing for the next lecture, etc.
- Use of discussion boards on SurreyLearn to support all assessments and general topics for discussion covering the content of the module.
Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.
Upon accessing the reading list, please search for the module using the module code: COM1027
Programming is one of the foundational skills of computer science. This module gives students a strong theoretical and practical grounding in object-oriented programming. The development skills taught in this module provide students digital skills, such as programming, reading UML diagrams and converting into code, that are highly valued in industry. The skills taught here feed directly into COM1028 (Software Engineering) but also into many of the later practical modules in the programme.
This module provides foundational software design and development skills that are the first steps to applying these techniques to solve real life problems, students are equipped with practical problem-solving skills, theoretical skills, and software design and development skills. It emphasises the need for a professional development approach through use of version control and testing. All of these are highly valuable to employers.
Global and Cultural Skills
Computer Science is a global language and the tools and languages used on this module can be used internationally. The same programming languages used in this module are used worldwide allowing students to work in different countries. This module allows students to develop skills that will allow them to develop applications with global reach and collaborate with their peers around the world.
Resourcefulness and Resilience
This module involves practical problem-solving skills that teach a student how to reason about and solve new unseen problems through combining the foundation theory taught with practical technologies for systems that are in everyday use. By the end of this module, students will be equipped with the skills to take a complex development problem and break it down into smaller more manageable steps that can be solved individually and then tested together.
Programmes this module appears in
|Computing and Information Technology BSc (Hons)||1||Compulsory||A weighted aggregate mark of 40% is required to pass the module|
|Computer Science BSc (Hons)||1||Compulsory||A weighted aggregate mark of 40% is required to pass the module|
|Computer Science MEng||1||Compulsory||A weighted aggregate mark of 40% is required to pass the module|
Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2023/4 academic year.