1. COMP1000 Software Engineering 1
1.1 Provisional Course Outline
This module exposes students to the principles of software design and construction. The basics of constructing source code to solve a problem will be introduced, exposing students to common control structures alongside concepts such as types and generics. Major programming paradigms such as object orientation and functional programming are introduced. Additionally, key software development tools and methods are explored.
This year we will be using the C and C++ languages. This provides a bottom-up approach to programming which hopefully demystifies some of the concepts met in computer science and programming.
C++ can be thought of as a super-set of the C language. We will start with C, and learn to program with a procedural style. We will then build on this and learn about object orientated programming with C++
| Week | Title | Topics |
|---|---|---|
| 1. | Introduction | Getting Setup: Using the development tools, including the build tools, version control and debugger; |
| Variables and arithmetic | Using the development tools to use variables to store and manipulate numerical values | |
| 2. | Flow Control | Conditions and Comparisons using if-else if-else |
| switch-case | ||
| 3. | Iteration | while and do-while loops |
| for loops and goto | ||
| 4. | Functions | Syntax, factoring code |
| Splitting code across modules | ||
| Variable Scope | ||
| 5 | Arrays, strings and pointers | C arrays; C strings, C++ strings |
| Pointer fundamentals | ||
| 6 | User and File IO | Terminals and File IO in C and C++ |
| 7 | Structures and C++ Classes | structures, simple classes, encapsulation, objects, statics |
| 8 | Object Orientated Programming (OOP) | Inheritance, composition, overloading, overriding |
| 9 | GUI OOP | OOP with Qt Widgets |
| 10 | Functional Programming | C++ closures, recursive programming |
For the fundamentals of the C programming language and basic programming concepts, we recommend the following.
C & GUI Programming 1st Edition, https://magpi.raspberrypi.com/books/c-gui-programming
For C++, we recommended the following: