CSC1015F
Introduction to Computer Science: What is Computer Science, Applications of Computing, History of Computing, Computer Hardware (Machine Architecture), Computer Software (System Software, Applications), Algorithms, Programming Languages Introduction to Python Syntax: Basic syntax, variables, operators, comments, expressions, output Conditionals: Boolean expressions and logical conditions, If statements, nested ifs, if-else, if ladders, Loops: for, while, nested loops Strings and Input Functions: parameters, return values Testing: debugging, equivalence classes Arrays: lists, dictionaries, sets, multi-dimensional arrays Recursion Sorting and Searching File I/O: text files, exceptions Number Systems: Machine representations of data, Binary operations, Boolean algebra
csc1015f_assignment_0
csc1015f_assignment_1
csc1015f_assignment_2
csc1015f_assignment_3
csc1015f_assignment_4
csc1015f_assignment_5
csc1015f_assignment_6
csc1015f_assignment_7
csc1015f_assignment_8
csc1015f_assignment_9
CSC1016S
Introduction to Object Oriented Programming (OOP), Java syntax OO Design, UML I, Classes and Instances Methods, Variables, Constructors Statics, References, Aggregation/Composition Inheritance, Polymorphism, UML II Graphics, GUIs Abstract data types, Interfaces, Generics, Design Patterns Arrays, Linked lists Stacks, Queues Testing with JUnit Ethics in Computing and ICT for Development Ethics; Professional Practice; Legalities of Software Systems; Open Source Software Development; ICT for Development
csc1016s_assignment_1
csc1016s_assignment_2
csc1016s_assignment_3
csc1016s_assignment_4
csc1016s_assignment_5
csc1016s_assignment_6
csc1016s_assignment_7
csc1016s_assignment_8
csc1016s_assignment_9
CSC2001F
Data Structures 1: Analysis of Algorithms: We will discuss how to express the running times of algorithms in a way that enables us to distinguish an efficient algorithm from an inefficient one. Trees (general, binary, AVL): We will study tree data structures, their applications, their algorithms and various techniques for ensuring their efficiency. We will end by studying Hash Tables in order to learn how to store large amounts of data in ways that are relatively easy to index and search. Data Structures 2: Searching must sometimes be done in terms of priority. Priority queues ensure that the information is always ordered so that the information with the highest priority is easily accessible. This is a good thing because retrieval can occur in constant time. Priority queues, and also B-tree indexes, will be studied. On a final note, we will discuss some graph algorithms because indexing and searching operations typically do not occur independently but rather as a sequence. It is therefore important to find ways of doing so optimally. For each of the data structures, we will discuss their pros and cons, as well as application examples for which each one is best suited. Databases: This module aims to develop an understanding of what makes a good database and an awareness of the issues in database management. On completion of the module students should be able to design, create, populate and query a database.
csc2001f_assignment_1
csc2001f_assignment_2
csc2001f_assignment_3
csc2001f_assignment_4
CSC2002S
Parallel and Concurrent Programming This module covers the basic principles and practice of parallel and concurrent programming with threads in Java, with aim of highlighting both the power and inherent complications of multithreaded programming. Topics: Introduction to parallel and concurrent programming, with definitions and overview of hardware; Threads; Parallel algorithms; Parallel Performance; Mutual exclusion; Thread safety; Condition Deadlock and Reader/Writer problem; Other topics - GUI’s and cancellation Mobile design and Development Mobile Development is an in-depth view and discussion on evolving mobile interface design principles with the objective of creating improved mobile user experiences. Topics: What is Mobile?; Mobile Operating Systems; Coding Apps; Mobile Web; UI Design Principles for Mobile; Input and Visualizations Computer Architecture This is an introduction to high-level concepts in modern computer architecture. Topics include: assembler; principles and implementation of CPU architecture; pipelining; multicore architectures; caching; virtualization; CPU/memory performance; RAM; and secondary storage. Additional topics, such as interfacing, GPUs and USB may be covered as well.
csc2002s_assignment_1
csc2002s_assignment_2
csc2002s_assignment_3
csc2002s_assignment_4
EEE2050F
The purpose of this course is to introduce second year students to a wide range of digital system concepts with a specific focus on embedded systems. This course aims to give students a strong foundation in embedded systems by introducing them to digital system fundamentals, including: information representation, Boolean algebra, logic gate behaviour, combinational and sequential digital circuits, digital building blocks and algorithmic state machines; C programming with a focus on microcontroller applications; basic microcontroller usage, including an introduction to computer architecture, general purpose input/outputs, analogue to digital convertors and basic timers.
eee2050f_prac_1_b
eee2050f_prac_2_b
eee2050f_prac_3_b
eee2050f_prac_4_b
CSC3002F
Networks Starting with the application layer network configurations and popular tools, the focus will be on the TCP/IP suite’s transport, network, and data link layers. Operating Systems This is an introduction to the structure and organisation of operating systems. Major topics include storage management (paging/segmentation, virtual memory, file systems) and protection and security issues.
csc3002f_assignment_1
csc3002f_assignment_2
csc3002f_assignment_3
CSC3003S
Advanced Software Design 1 and 2 This part of the course is about software design, that is, how to turn ideas into quality effective and efficient code in a systematic and controlled manner. We start by reviewing O-O & UML, project management and software development methodologies. We investigate software development with SCRUM. Software architecture is an important topic together with design patterns. Theory of Algorithms Algorithms are central to computing. This course describes how algorithms are categorised. We learn interesting algorithms in each category and analyse their complexity. Theory of Computation This part of the course focuses on the question: What are the fundamental capabilities and limitations of computers? We study this question by considering the central areas of the theory of computation: automata, computability, and complexity.
csc3003s_assignment_1
CSC3022H
Introduction to C++ C++ program structure; pointers and C++ memory management model; streams and I/O; object orientation in C++; resource management; operator overloading; function objects; templates; the STL; exceptions
csc3022h_assignment_1
csc3022h_assignment_2
csc3022h_assignment_3
csc3022h_assignment_4
csc3022h_assignment_5
ML_LABS
Introduction to Machine Learning Types of learning – supervised, unsupervised, evolutionary, reinforcement; neural networks; Naïve Bayes networks; generative learning algorithms; clustering; Q-learning; policy and value function approximation.
ML_LAB_1
ML_LAB_2
ML_LAB_3
ML_LAB_4
ML_LAB_5
ML_LAB_6
ML_LAB_7
ML_LAB_8
ML_LAB_9
EEE3096S
This course integrates aspects of embedded systems and computer architecture. This course builds upon the Embedded Systems 1 (ES1) second year course, which provided fundamental knowledge of electronics, computer architecture and embedded system design. The course is divided into two parts. Part I involves computer architecture, operating systems, and using a single board computer embedded platform and an embedded Linux operating system in case studies and in practicals. A miniproject (Project A) is performed which involves implementing a state machine and performing thorough analysis of its design and performance. Part 2 concerns digital system design, focusing on HDL coding and applying these skills in lab practicals to simulation state machines and other constructs that are useful in embedded system design.
eee3096s_prac_1
eee3096s_prac_2
eee3096s_prac_3
eee3096s_prac_4
eee3096s_prac_5
eee3096s_prac_6_a
eee3096s_prac_6_b