COMP 1003: Foundations of Computing Systems
This course is required for all computer science MAJ majors and MIN minors.
This course is a follow up to a course in computer programming and would be of interest to students who want to pursue a degree in computer science or to those who are interested in learning foundational ideas in the science of computing.
|Lab||In addition to classes, this course has one structured laboratory session per week.|
Prerequisites: COMP 1001
Corequisites: COMP 1002 or Mathematics 2320
Availability: This course is usually offered on-campus in Fall and Winter semesters.
|ⓘ||COMP 1002 can be taken before or at the same time as COMP 1003, but COMP 1003 cannot be taken before COMP 1002.|
The objective of this course is to provide a solid introduction to foundational topics in computer science: algorithms and data structures, theory of computing, machine architecture and their historical context.
- Assignments 10%
- Lab Quizzes 10%
- Midterm Exam 25%
- Final Exam 35%
Representative Course Outline
- Algorithms and data structures (10 hours)
- Abstract data types and their implementation; using, designing and creating data types
- Algorithms for sorting and searching
- Fundamental data structures and their performance characteristics
- Theory of computing (10 hours)
- Alphabets, formal languages and their descriptions
- Abstract machines, finite state automata, Turing machines
- Machine architecture (10 hours)
- From abstract machines to “real computers”
- Representation of information, characters, integers and floating point numbers
- Machine language programming
- Virtual machines
- Boolean logic and the circuit model
- Combinational circuits, gates, multiplexors, decoders, arithmetic and logic unit
- Sequential circuits, flip-flops, memory, registers, clock
- Digital devices, program counter, control, central processing unit
- This course requires programming in Python.
Page last updated May 24th 2021