Welcome to Digital Systems!
Hello. Thanks for taking a look at the EEE4084F Digital Systems website. All the resources on this site are available for free use and reuse without written consent from the lecturer; if you are using any of the resources for a formal course or lectures then I would appreciate if you acknowledged the source, see the EEE4084F Resource Use Policy for details.
Objective of this Course
The objective of this course is to develop an understanding of the concepts involved in the design and development of high performance and special-purpose digital computing systems, in terms of both hardware and software design. The course builds on a basic understanding of parallel computing principles, expanding the students' expertise into the specialized fields of reconfigurable computing, heterogeneous computing and high performance parallel computing. The coursework involves laboratory assignments and two mini projects. A number of compulsory tests are held, for which advanced notice and a syllabus is provided. The lecture sessions include presentations by lecturers, seminars and workshops during which students learn fundamental theories, brainstorm ideas, and discuss influential and recent publications in the field.
Course Information
Course Outline | Download Course Handout |
SAQA Credits | 20 Credits |
Prerequisites | CSC4015Z, EEE3064W or EEE3017W (>70%) |
Lecture Times and Venues | Tue 2pm - 4pm: EM5 Thu 2pm - 4pm: EM5/Blue Lab (Lecture/Prac/Activity) |
Prac Times and Venues | Wed 4pm - 6pm: Blue Lab Thu 3pm - 5pm: Blue Lab |
DP Requirement | Overall class average of 40% Seminar presentation |
Final Mark Weighting | 10% Lab Practicals 16% Project 16% Tests 8% Other (Homework, Seminars) 50% Final Exam |
preparatory Resources
For this course it is important that you have some C / C++ programming expertise, have done some Hardware Description Language (HDL) coding (e.g. VHDL or Verilog - although in this course we will cover Verilog programming from a fairly basic level). You should understand computer hardware well, have done digital combinational logic, have a good understanding of digital circuits, have a basic understanding of pipeline and super-pipelined systems. Ideally you should have implemented a small processor HDL (or at least in terms of schematics). You should also have done software engineering, being comfortable with describing software designs, flow charts and state machines.
Some useful resources include, which can help you prepare for the course are:
- "Computer System Architecture" MiT Open Courseware. link: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-823-computer-system-architecture-fall-2005/
- "Foundations of Software Engineering" MiT Open Courseware. link: https://ocw.mit.edu/courses/civil-and-environmental-engineering/1-124j-foundations-of-software-engineering-fall-2000/
- "Cprogramming.com" - these are good to exercise your knowhow of C and C++, to practice more advanced C++. Link: https://www.cprogramming.com/tutorial/c++-tutorial.html
- "Cplusplus.com" - the goto place for checking structures of C++ issues, and honing expertise e.g. on data structures and pointers. link: http://www.cplusplus.com/ (see below if you have no C++ knowledge)
- "LearnCpp.com" - free beginner level tutorials - start here if you are really quite clueless about C++ programming. link: http://www.learncpp.com/
- "CodeProject" - once you're a bit more conversant in C++ consider joining the CodeProject which has many useful articles. link: https://www.codeproject.com/
Related Websites
For more information, refer to these websites: