EEEN20010 Computer Engineering

Academic Year 2020/2021

This module provides a comprehensive foundation in computer programming using the medium of the C programming language. It covers basic programming concepts common to all programming languages (such as data types and expressions, flow of control, file I/O) as well as advanced features of the C language such as pointers and multidimensional arrays. More advanced synthetic data structures are also covered, including linked lists and stacks. An introduction to algorithmic complexity analysis is provided, using sorting algorithms as an illustration. The module has a strong laboratory component as students are provided with a structured set of programming exercises to guide them through the concepts covered in lectures. The programming exercises require students to design their own algorithmic solutions as well as to program their solutions in C.

Specific topics covered include:

* Types, operators and expressions
* Basic input/output
* Flow of control
* Functions
* The C preprocessor
* Arrays, pointers and strings
* User-defined types
* Structures
* File handling
* Program organisation
* Elementary data structures
* Sorting algorithms
* Analysis of algorithms

Show/hide contentOpenClose All

Curricular information is subject to change

Learning Outcomes:

On successful completion of this module, a student will be able to:

1. Write a program to solve a specific problem
2. Use basic tools common to software engineering such as compiling and linking of multiple source files into a single executable
3. Recognise and interpret the purpose of a piece of C code
4. Carry out an analytical comparison of the computational complexity of two algorithms which solve the same problem
5. Use advanced data structures such as linked lists and stacks.

Student Effort Hours: 
Student Effort Type Hours
Lectures

12

Computer Aided Lab

12

Specified Learning Activities

30

Autonomous Student Learning

60

Total

114

Approaches to Teaching and Learning:
Classes will explain C programming concepts and show illustrative examples of these concepts in action. In class we will also work through specific problems of problem solving through programming. There will be an emphasis on developing the key skill of breaking a problem into smaller parts, developing an algorithmic solution to the problem, and then finally translating that solution into software. Comprehensive electronic notes will be provided, and many extra worked examples and problems will be solved in class. 
Requirements, Exclusions and Recommendations
Learning Recommendations:

It is strongly recommended that students have some prior experience of computer programming such as would be provided by module COMP10060 "Computer Science for Engineers".


Module Requisites and Incompatibles
Not applicable to this module.
 
Assessment Strategy  
Description Timing Open Book Exam Component Scale Must Pass Component % of Final Grade
Class Test: Lab Programming Exam Week 12 n/a Graded No

40

Assignment: Lab Programming Assignments Varies over the Trimester n/a Graded No

40

Multiple Choice Questionnaire: Brightspace Quiz Week 7 n/a Graded No

20


Carry forward of passed components
Yes
 
Resit In Terminal Exam
Spring Yes - 2 Hour
Please see Student Jargon Buster for more information about remediation types and timing. 
Feedback Strategy/Strategies

• Feedback individually to students, post-assessment

How will my Feedback be Delivered?

There will be 4 programming assignments throughout the trimester. For each assignment, individual-level feedback will be provided as well as the overall grade for each submission. For the Brightspace Quiz (Week 6), group-level feedback will be provided to the class.

Name Role
Muhammad Zaeem Hasan Tutor
Ms Yue Wang Tutor