A Beginner's Guide to Research
Getting Started
Booklet, 660 kb: ; Slides, 66 Mb:
Click here for the full course description, notes, and readings.
Click here for the full course description, notes, and readings.
Click here for the full course outline, notes, and readings.
Abstract Data Types (ADTs)
The syntax and semantics of C and C++
Object-oriented design and programming:
Classes, encapsulation, constructors, destructors, operator overloading, friend functions, deep and shallow copying, interface, implementation, and application files, derived classes, inheritance, virtual function, late binding, abstract classes, virtual base classes, static class members, polymorphism, and reusability
Click here for the full course description, notes, and readings.
Digital data communication standards - Serial communications: Devices, RS232 and RS422 protocols, handshaking signals, implementing an RS232 communications link on IBM PC.
Universal Serial Bus: USB standards. Types and elements of USB Transfers. Development procedure of USB application.
Parallel communications: The General Purpose Interface Bus (GPIB), GPIB signals and lines, handshaking and interface management. Implementing a GPIB link with IBM PC.
Digital Interfacing: Digital I/O ports, Interfacing external signals to digital I/O ports, optical isolation.
Analogue Interfacing: Revision of A/D and D/A conversion techniques, multiplexing, analogue I/O cards, data acquisition and control using the IBM-PC.
Overview: Key Concepts, Components of a computer system, input, output, storgae, hardware, software, operating systems, applications.
Processor architecture and operation: CPU, Control Unit, ALU, Registers, Memory, Instruction cycle, Register Transfer Language.
Information Representation: Text, ASCII, Numbers, Binary, Hex, 2s complement.
Digital Design: Analogue and digital signals, Boolean algebra, Logic gates (AND, OR, NOT, XOR, NAND, NOR), DeMorgan's Laws, Simplification of Boolean expressions, Minterms, Karnaugh maps, Binary Arithmetic, half adder, full adder, 4 bit binary adder.
Click here for the full course description, notes, and readings.
Click here for the full course description, notes, and readings.
Probability: frequentist vs Bayesian approaches, joint probability, conditional probability, probability distributions (uniform, binomial, normal/Gaussian, Poisson), random variables, Bayes' theorem
Application to classification using naive Bayes' classifier
Application to discrete event simulation of queues using the Poisson distribution
Click here for the full course description, notes, and readings.
Historical overview: Motivation for operating systems, historical perspective.
OS concepts, functions and structure: Basic functions and components of a general purpose operating system. OS concepts and system calls.
Processes and Threads: process model, process table, and process state diagram. Thread model.
Interprocess communication: race condition and critical regions, mutual exclusion with busy waiting, sleep and wakeup, semaphores, message-passing. Producer/consumer and read/write problems and solutions.
Process scheduling: goals of process scheduling, preemptive and non-preemptive scheduling. Scheduling in batch and interactive system. Round-robin, priority scheduling, starvation and aging.
Memory Management: functions of memory manager, basic management techniques, multiprogramming modeling and issues, swapping. Virtual memory with paging, address translation, page tables, multi-level tables, TLB, page replacement algorithms, page fault handling. Segmentation of memory.
Device management: I/O hardware, role of OS. I/O operations, polling, interrupt-driven, and DMA. I/O software goals and layers. Examples such as disks, clocks, and power management.
File management: file system characteristics; file naming, structure, types, access, attributes, and operations. Directories organization and operations. File system implementation, allocation methods.
Basic principles of computer programming in the C language: types, variables, values, assignment statements, I/O, logical operators, conditional statements, iteration, functions and parameter passing, arrays, structures, file I/O, pointers.
Click here for the full course outline, notes, readings, and links.
Introduction: file-based systems, database systems, DBMS, hardware, software, users; function of the Database Administrator and Data Administrator.
Data Models & Architecture: object-oriented logical models, record based logical models (hierarchical, network, relational), physical models, ANSI/SPARC architecture
Entity-Relationship Model: entities, relationships, mappings, keys, E-R diagrams.
Relational Model: data structure, data integrity, data manipulation, relational terminology, relational algebra.
Structured Query Language (SQL) : Create, Drop, Select, Insert, Update, data definition, keys, data manipulation, queries (the where, order and group by clauses), aggregate functions, nulls, self-joins, union, subqueries, domains, base tables and views, DDL.
Data Integrity: superkeys, candidate keys, foreign keys, referential integrity.
Normalisation: functional dependencies, 1st, 2nd and 3rd normal form.
Storage Access: buffer management, file organization.
Click here for the full course description, notes, and readings.
Marr's hierarchy of abstraction / levels of understanding framework
Programming paradigms
Software development lifecycle and process models
Software development vs. software engineering
Software process and project metrics: measures vs. metrics, process improvement, LOC metrics, FP metrics, metrics for quality (correctness, maintainability, integrity, usability, defect removal efficiency).
Software project planning: resources, estimation, decomposition, COCOMO estimation model. Project scheduling and tracking: human resources and effort, task definition, task networks, schedules.
Software quality assurance (SQA): quality attributes, software reviews, statistical quality assurance, software quality standards, McCall's quality factors, FURPS, metrics for analysis, design, implementation, testing, maintenance.
Object-oriented analysis, design, and testing: OOD concepts, analysis and design issues, classes, inheritance, and polymorphism, testing strategies, metrics.
Social, ethical and professional issues: code of ethics, copyright & security.
289 Slides, 560 kb:
89 Pages, 557 kb:
The Importance of Final Year Projects
Choosing Your Project.
Planning, Executing, and Managing Your Project: Problem Identification. Requirements Elicitation. Problem Modelling. Systems Analysis and Specification. System Design. Module Implementation and System Integration. Testing and Evaluation. Documentation. Good Engineering Practice and Safety Regulations. Back to the Beginning. Managing Your Project.
Documenting Your Project: Project Specification. Interim Progress Report. Final Report. Presentations. A Very Short Guide to Good Writing.
Project Assessment and Marking.
Click here for the full course outline, notes, readings, and links.
Click here for the full course outline, notes, readings, and links.
Introduction
The Software Development Lifecycle
Problem Identification
Requirements Elicitation
Problem Modelling
Systems Analysis and Specification
System Design
Module Implementation and System Integration
Testing
Documentation
|