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.
Course Objectives

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.

Representative Workload
  • Assignments 10%
  • Lab Quizzes 15%
  • Midterm Exam 30%
  • Final Exam 45%
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
    • Universality
    • Computability
    • Intractability
  • 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
Notes
  • This course requires programming in Python.