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

Module leaders

Dr Nicolas Wu
Dr Blay Whitby
Dr Jamie Willis
Mr Duncan White
Dr Thomas Lancaster
Dr Maria Valera-Espina
Dr Konstantinos Gkoutzis
Professor Alastair Donaldson