PROGRAMMING FUNDAMENTALS - 2022/3 - University of Surrey Programme/Module Catalogue 2022/3 Modules PROGRAMMING FUNDAMENTALS PROGRAMMING FUNDAMENTALS - 2022/3 Module code: COM1027 In light of the Covid-19 pandemic the University has revised its courses to incorporate the ‘Hybrid Learning Experience’ in a departure from previous academic years and previously published information. The University has changed the delivery (and in some cases the content) of its programmes. Further information on the general principles of hybrid learning can be found at: Hybrid learning experience | University of Surrey. We have updated key module information regarding the pattern of assessment and overall student workload to inform student module choices. We are currently working on bringing remaining published information up to date to reflect current practice in time for the start of the academic year 2021/22. This means that some information within the programme and module catalogue will be subject to change. Current students are invited to contact their Programme Leader or Academic Hive with any questions relating to the information available. Module Overview This module will provide an introduction to the fundamental concepts of object-oriented programming using Java. We will start with understanding basic data types and programming structures. We will then introduce from first principles what objects and classes are and introduce more advanced datatypes and programming structuring techniques for object-oriented programming. The module how to develop programs from high level design diagrams. The important of testing your programmes will also go hand in hand with programming. We will use appropriate tools and libraries, such as Eclipse and JUnit to provide industrial quality tools to support the module. Module provider Computer Science Module Leader KAZAMIA Stella (Computer Sci) 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: 94 Tutorial Hours: 10 Laboratory Hours: 22 Captured Content: 22 Module Availability Semester 1 Prerequisites / Co-requisites None. Module content Indicative lecture content includes: Introduction 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 Strings Enumerated Types Working with classes and UML class diagrams Coding best practice Coding style Testing with JUnit Collections Arrays Collections using Lists and Maps Inheritance Superclasses and subclasses Assessment pattern Assessment type Unit of assessment Weighting Practical based assessment WEEKLY LAB ASSIGNMENTS 20 Coursework COURSEWORK PROJECT (INDIVIDUAL) 80 Alternative Assessment N/A Assessment Strategy 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: · 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. · A 3h unseen practical examination on the whole course content in the laboratory. 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 assessment includes more advanced structuring techniques. The individual courseworks will be due before the Christmas vacation period. The exam takes place at the end of the semester during the exam period. Formative assessment and feedback The formative assessment consists of: EVS handsets are used extensively in the lectures with each lecture consisting of a number of slides explaining the theory 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. An early assignment during the first few weeks of the course. The assignment covers the following: given a UML class diagram, method description and unit tests, a student will be expected to implement the required functionality in Java and test its function. Students will be asked to make an attempt at this. During this first formative assessment support will be given through the discussion boards and individually. Feedback will be provided collectively (not individually) in a lecture to go through the solution together. This will provide an introduction to the use of grade descriptors in marking. An individual formative assessment will be provided mid way through the course which takes a UML class diagram and method description and a student will be expected to implement the required functionality in Java and test its function. This will provide the students with their first experience of receiving feedback based on the use of detailed grade descriptors in preparation for the summative 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. Module aims 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. Learning outcomes Attributes Developed 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 Attributes Developed 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 lecture, 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 Surrey learn, through the discussion boards that support each courework 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 sessions 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 (11 weeks at 3h/week) using EVS handsets to gauge the students’ understanding Practial session (11 weeks at 2h/week) using Eclipse, Java and JUnit. Each practical lab session will provide direct support and elaborate on the topics covered in order to use Eclipse and JUnit to support the application of the topics covered. It will also provide a mock exam session in preparation for the practical examination. Tutorial sessions (10 weeks at 1h/week) interactive in the laboratory using directed exercises. Independent learning (12 weeks at approx 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 board on SurreyLearn to support all coursework 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. Reading list https://readinglists.surrey.ac.uk Upon accessing the reading list, please search for the module using the module code: COM1027 Programmes this module appears in Programme Semester Classification Qualifying conditions Computer Science BSc (Hons) 1 Compulsory A weighted aggregate mark of 40% is required to pass the module Computing and Information Technology BSc (Hons) 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 2022/3 academic year.