CO225 - Software Construction
Course Code
CO225
Course Title
Software Construction
Credits
3
Course Type
CORE
Prerequisites
Aims/Objectives
Use a problem-based approach to introduce the tools and techniques afforded by high-level languages, standard libraries and operating systems so that students will be able to use these primitives while constructing relatively large software.
Intended Learning Outcomes (ILOs)
Knowledge:
At the end of this course, a student will be able to;
- Choose an appropriate data collection for efficiently representing a problem's data and its associated computations.
- Apply declarative programming to data-intensive problems.
- Use objects or algebraic data types to construct a suitable data representation for problems involving trees and graphs.
- Identify opportunities for concurrency in existing code or a problem description.
- Cleanly separate user interface and input/output concerns from core program logic.
Skill:
At the end of this course, a student will be able to;
- Scan and parse unstructured and structured textual formats to extract data.
- Traverse a linked data structure to perform a computation.
- Write a simple network client (e.g. web crawler).
- Build programs usable via multiple interfaces (command-line, GUI.)
- Write secure, testable and modular code.
Attitude:
- Use the right tool/technique for the job.
- Do one thing and do it well (UNIX “tiny tools” philosophy).
Textbooks and References
- Mark Pilgrim, Dive into Python 3; http://www.diveinto.org/python3/
- Software Carpentry Lessons; http://software-carpentry.org/v4/
- Brad Miller and David Ranum, Problem Solving with Algorithms and Data Structures; http://interactivepython.org/runestone/static/pythonds/index.html
Topic | Time Allocated / hours | |||
---|---|---|---|---|
L | T | P | A | |
Introduction of features of a selected language Control constructs, static / dynamic typing, scope and name-spaces, automatic memory management |
4 | - | 3 | 1 |
Data collections (containers) Lists, tuples, sets and hash tables, Iterating over collections, efficiency considerations |
2 | 1 | 2 | 1 |
Input/output, error handling and parsing textual formats Command-line arguments, files and streams, errors and exceptions, pattern matching with regular expressions, parsing structured data (HTML, XML and JSON.) |
3 | 1 | 3 | 1 |
Declarative programming Functions as first-class values, closures, collection-oriented programming; map, filter and reduce (accumulate) |
3 | 1 | 3 | 1 |
Classes and objects Classes as user-defined types, object instances, references and aliasing, composing objects, defining linked structures (trees and graphs) |
3 | 1 | 3 | 1 |
Event-driven programming Graphical user interfaces and callbacks, Observer pattern and model-view separation, threading and asynchronous updates |
3 | 1 | 3 | 1 |
Concurrency and network clients Language facilities for concurrency (co-routines, fork/join),multiprocessing and pipelines, sockets |
4 | 1 | 2 | 1 |
Code quality Secure programming, assertions and unit tests, writing testable code, test and build automation, code modularity and reuse |
3 | - | 3 | 1 |
Total (hours) |
25 | 6 | 20 | 8 |
L = Lectures, T = Tutorial classes, P = Practical classes, A = Homework Assignments
Assessment | Percentage Marks |
---|---|
Practicals | 30 |
Projects | 30 |
End-Exam | 40 |
Last Update: 08/02/2023
|
Edit this page