40009
Computing Practical 1
Module aims
In this module you will have the opportunity to develop various practical skills, including programming, Web development, basic academic research and both written and oral communication skills, all of which are important attributes of a professional software engineer. The programming aspects of this module will also give you a chance to put into practice some of the theoretical material covered in the first year lecture courses and to explore additional topics in Computing that will be built on in later years.
Learning outcomes
Upon successful completion of this module, you should be able to:
- demonstrate proficiency in using programming languages from three of the major paradigms
- develop working solutions to well-specified programming problems of small to medium size
- create a website that meets stakeholder needs
- use core software development tools effectively, including those for version control
- undertake basic research into Computing topics, including those related to Computing ethics
- write short technical documentation that demonstrate proficiency in scientific communication
- deliver short oral presentations summarising practical project work and research findings
- operate effectively as a member of a group to produce deliverables that meet set criteria
Module syllabus
- Functional programming in Haskell
- Functional and procedural programming in Kotlin
- Object-oriented programming in Kotlin and Java
- Assembler programming
- Programming in C
- Web development using HTML, CSS and JavaScript
- Computer systems project
- Introduction to research methods
- Introduction to Ethics in Computing
- Introduction to academic writing
- Oral presentation skills
Teaching methods
The emphasis is on self-study, both as an individual and as part of a small group. In the first two terms there will be weekly small-group personal programming tutorials (PPTs) which will give you the chance to develop your individual programming skills under the guidance of an academic tutor and Undergraduate Teaching Assistant (UTA). There will also be timetabled laboratory sessions, supported by both Graduate Teaching Assistants (GTAs) and UTAs, which will give you dedicated time to work on the practical exercises and receive support and guidance on your work. There will be formative programming exercises each week in the first two terms and these will be assessed by your UTA and returned to you at the following week's PPT session. The first two terms will focus on Haskell and Java/Kotlin, alongside Web development skills. In the third term you will work in small groups to develop an assembler and emulator for the ARM architecture. An accompanying exercise will involve you developing a simple application for the Raspberry Pi and then building an extension of your choice. The objective here is to combine your C and assembler programming skills with some basic hardware development skills to build a novel application for the Pi from first principles.
The module also exercises your ability to communicate the results of practical work and how to use basic research methods to find things out for yourself. These are exercised through research into a Computing topic of your own choice as well as ethical issues that you need to bear in mind when developing computer-based systems. You will be giving basic training in technical writing and oral presentation skills, in order to help you to communicate effectively the findings of both project work and research. These are important skills that will be exercised throughout your degree programme.
Assessments
The weekly formative programming exercises are assessed and returned within 7 days, but this is for feedback only - the marks do not count towards your year total. The assessed components include tests in both Haskell and Kotlin/Java, and a C programming test. These are undertaken using an online programming test system and under exam conditions. The assembler/emulator project in the summer term is assessed in small groups via a demonstration and short presentation. Your Web development skills will also be assessed. The research and ethics components are assessed by a short report and presentation; the assessment addresses technical content as well as your written and oral communication skills.
Detailed feedback, both written and verbal, will be given on the weekly formative programming exercises covered in the PPT tutorials, as well as the assessed online programming tests. You will get verbal feedback on your summer term assembler/ emulator and Raspberry Pi projects as part of the assessment. You will receive written feedback on the content of your research and ethics investigations and also your technical writing and communication skills.
Reading list
Reading list
-
Thinking functionally with Haskell
Cambridge University Press
-
Ethical and Secure Computing [electronic resource] : A Concise Module
3rd ed. 2023., Springer International Publishing ; Imprint Springer
-
Programming in Haskell
Second edition., Cambridge University Press
-
Haskell: the craft of functional programming
3rd ed., Addison-Wesley
-
Writing for Computer Science
3rd ed. 2014., Springer London
-
Thinking in Java
4th ed., Prentice Hall
-
The C programming language
Second edition., Prentice Hall PTR
-
The Pragmatic Programmer : Your Journey to Mastery
Second edition., Pearson Education
-
Kotlin in action
1st edition, Manning
Module leaders
Dr Blay WhitbyDr Jamie Willis
Mr Duncan White
Dr Matt Collison
Dr Thomas Lancaster
Dr Maria Valera-Espina
Dr Konstantinos Gkoutzis
Professor Alastair Donaldson