Skip past navigation to main part of page
 
Faculties : A-Z Directory : Library
---

Second Year Subjects (from 2009)

433-297 Programming the Machine (semesters 1 and 2)

Overview: In many projects, it is important for programmers to have fine control over low-level details of program execution. This subject introduces students to a system programming language that gives programmers this kind of control, and to the knowledge required to use this control to design efficient and effective programs. Topics include: introduction to computer organization; machine level representation of data; programming in an assembly language; programming in a system programming language; using dynamic memory allocation; multi-module programs; build tools; program testing; and standard software development tools such as debuggers.

Assessment: Project work during semester, expected to take about 24 hours (30%); a mid-semester test (10%); and a 2-hour end-of-semester written examination (60%). To pass the subject, students must obtain at least 50% overall, 15/30 in project work, and 35/70 in the mid-semester test and end-of-semester written examination combined.

Contact Hours:2 one-hour lectures; 1 two-hour workshop; 1 tutorial.

Prerequisite: 600-152 Informatics 2: People, Data and the Web OR 433-296 Engineering Computation. Antirequisite: 433-252 Software Engineering Principles and Tools

433-298 Algorithms and Data Structures (semesters 1 and 2, starting semester 2, 2009)

Overview: Programmers can choose between several representations of data. These will have different strengths and weaknesses, and each will require its own set of algorithms. This subject will cover some of the most frequently used data structures and their associated algorithms. The emphasis will be on justification of algorithm correctness, on analysis of algorithm performance, and on choosing the right data structure for the problem at hand. Topics include: justification of algorithm correctness; asymptotic and empirical analysis of algorithm performance; algorithms for sorting and searching, including fundamental data structures such as trees and hash tables; and graph algorithms.

Assessment: Project work during semester, expected to take about 36 hours (30%); a mid-semester test (10%); and a 3-hour end-of-semester examination that includes a practical programming component (60%). To pass the subject, students must obtain at least 50% overall, 15/30 in project work, and 35/70 in the mid-semester test and end-of-semester examination combined.

Contact Hours: 2 one-hour lectures; 1 two-hour workshop.

Prerequisite: 433-297 Programming the Machine AND 25 points of first-year mathematics. Antirequisite: 433-253 Algorithms and Data Structures

433-294 Object Oriented Software Development (semester 2)

Overview: Developing medium and large scale software systems requires analysis and design prior to implementation. This subject introduces students to software design, with specific focus on object-oriented design, and the implementation of designs using an object-oriented programming language. Topics include: software design principles; object-oriented design concepts and modelling; design patterns and their applications; object-oriented programming and frameworks.

Assessment: Project work during semester, expected to take about 36 hours (30%); a mid-semester test (10%); and a 2-hour end-of-semester written examination (60%). To pass the subject, students must obtain at least 50% overall, 15/30 in project work, and 35/70 in the mid-semester test and end-of-semester written examination combined.

Contact Hours: 2 one-hour lectures; 1 two-hour workshop.

Prerequisite: 433-297 Programming the Machine. Antirequisite: 433-254 Software Design

433-295 Discrete Structures (semester 2)

Overview: Formal logic and discrete mathematics provide the theoretical foundations for computer science. This subject is an introduction to the science of computing. It provides a grounding in the theories of logic, automata and formal languages, providing concepts that underpin virtually all the practical tools contributed by the discipline, for automated storage, retrieval, manipulation and communication of data. Topics include: sets, functions, relations, and combinatorics; propositional and predicate logic; proof principles; induction and recursion, well-ordering; regular languages, finite-state automata, context-free grammars and languages, pumping lemmas, parsing.

Assessment: Project work during the semester, expected to take about 24 hours (20%); two homework sets, one during each half of the semester, expected to take 8 hours each (20%); and a 2-hour end-of-semester written examination (60%). To pass the subject, students must obtain at least 50% overall, and at least 30/60 in the written examination.

Contact Hours: 2 one-hour lectures; 1 two-hour workshop.

Prerequisite: One first year mathematics subject. Antirequisite: 433-255 Logic and Computation

433-296 Engineering Computation

Overview: Many engineering disciplines make use of numerical solutions to computational problems. In this subject students will be introduced to the key elements of programming in a high level language, and will then use that skill to explore methods for solving numerical problems in a range of discipline areas. Topics include: algorithmic problem solving; fundamental data types: numbers and characters; approximation and errors in numerical computation; fundamental program structures: sequencing, selection, repetition, functions; number representation, and accuracy in numerical computations; simple data storage structures, variables, arrays, and structures. Topics in numerical computation will be selected from among: roots of equations; numerical solution of linear algebraic equations; curve fitting and splines; interpolation and extrapolation; numerical differentiation and integration; numerical solution of ordinary differential equations; pre- and post-computational analysis; and graphical representation of results.

Assessment: Project work during semester, expected to take about 36 hours (30%); a mid-semester test (10%); and a 2-hour end-of-semester written examination (60%). To pass the subject, students must obtain at least 50% overall, 15/30 in project work, and 35/70 in the mid-semester test and end-of-semester written examination combined.

Contact Hours: 2 one-hour lectures; 1 two-hour workshop.

Prerequisite: 620-154 Calculus 1, 620-156 Linear Algebra, and 800-002 Engineering Systems Design 2. Antirequisite: 433-171 Introduction to Programming, 433-151 Introduction to Programming (Advanced)

600-206 Informatics 3: Content Management (semesters 1 and 2)

Overview: Contemporary online services, such as social networking and multimedia sharing sites, massively multiplayer online games, as well as commerce services are built on content management systems and underlying databases. In this subject, students will learn how to build their own domain-specific content management system, combining web technologies with database technologies. Topics include: collection, modelling and retrieval of information in databases; query languages including SQL; integration of databases with websites; web interfaces; data interchange using XML; transactions; and a selection of advanced topics in data management.

Assessment: Project work during semester, expected to take about 36 hours (30%); a mid-semester test (10%); and a 2-hour end-of-semester written examination (60%). To pass the subject, students must obtain at least 50% overall, 15/30 in project work, and 35/70 in the mid-semester test and end-of-semester written examination combined.

Contact Hours: 2 one-hour lectures; 1 two-hour workshop.

Prerequisite: 600-152 Informatics 2: People, Data and the Web. Antirequisite: 433-351 Database Systems; 615-230 Database Concepts.


Third Year Subjects (from 2010)

Declarative Programming (semester 1)

Declarative programming languages provide elegant and powerful programming paradigms that every programmer should know. Topics covered include functional programming, logic programming, constraint programming; declarative programming techniques, including higher order programming and the exploitation of advanced type systems; declarative languages as a competitive advantage, and how they fit into an environment dominated by imperative languages.

Networks, Operating Systems and Web Services (semester 1)

Many software systems are now implemented as services accessible over computer networks, often using the Web. This subject will teach students what they need to know about operating systems, networks and the web in order to build systems that deliver software as a service.

Software Modelling and Design (semester 1)

Given the requirements for a software system, a software engineer must analyse these requirements and design the system before development. Topics covered in this subject include: software design process and design principles; the Unified Modelling Language (UML); object-oriented (OO) requirements analysis; architectural design, detailed design; design patterns and architectural styles; tools for analysis and design.

Software Processes and Management (semester 1)

Successful development and maintenance of software depends on a combination of technical and managerial processes. Topics covered include: introduction to software engineering, software development lifecycle models; project management topics including working in teams, professional communication, project planning, change control, cost estimation, risk management; and quality assurance.

Text Technologies (semester 1)

Much of the world's knowledge is stored in the form of text. In this subject students will learn algorithms and data structures for representing, transforming and analysing text. Topics include: character encoding, markup and electronic publishing, regular expressions, web-crawling, indexing, stemming, text categorization, text retrieval, including the vector space model, text compression, natural language processing and information extraction.

Graphics and Interaction (semester 2)

Whenever software requires user interaction - whether in engineering, science, commerce, entertainment - complex information must be presented to users in visual form. This subject introduces the two sides of graphics: the computational processing required to generate graphical output, and the limitations of human visual perception that constrain what can be communicated in this way. Topics covered include 2D and 3D computer graphics; colour models; raster and vector graphics; geometric rendering and visualisation; graphical user-interfaces; computer perception; usability and accessibility; and at least one additional topic such as virtual reality, haptics, audio, telepresence, or image processing.

Computer Science Project (semester 2)

This subject provides a capstone project for the Computer Science major in which teams develop a game-playing program and compete with other teams. Topics covered include: project management; professional ethics; artificial intelligence; human-computer interfaces; distributed systems. project specification and reporting.

Requirements Engineering (semester 2)

Effective software must meet the complex needs of real-world users. A software engineer begins with user problem statement and creates a rigorous description of the desired system, evaluating the feasibility of various implementations. Topics covered include: requirements fundamentals; requirements engineering process; elicitation techniques such as interviews, use cases; requirements analysis; requirements specification; requirements validation; managing conflicting requirements; and requirements engineering tools.

Software Systems Project (semester 2)

Working in a team to develop a software system within time and resource constraints is a challenging task. This subject gives students their first complete experience in analysing, designing, and implementing a medium-scale software system. Students will work in a small team to solve a problem, and must show that they can apply sound engineering principles to the formulation and solution of their problem.

Software Testing (semester 2)

Society depends crucially on the correct functioning of software, such as electronic commerce, medical imaging and air-traffic control. Software testing ensures that software meets the expectations of users. Topics covered in this subject include: quality assurance processes; principles of software validation and verification; static verification techniques including reviews, audits; dynamic testing techniques including black box and white box testing; problem analysis and reporting techniques; reliability measurement; and testing tools.

Theoretical Computer Science (semester 2)

At the heart of theoretical computer science are questions of both philosophical and practical importance. What does it mean for a problem to be solvable by computer? What are the limits of computability? Which types of problems can be solved efficiently? What are our options in the face of intractability? This subject covers such questions in the context of a wide-ranging exploration of the nexus between logic, complexity and algorithms, and examines many important, sometimes surprising, results about the nature of computing.

---
top of pagetop of page

Contact us

Contact the University : Disclaimer & Copyright : Privacy : Accessibility