In this course, students learn how one can describe the basic operations in a computer using digital logic, and how these operations can be realized in both hardware and software. Students gradually combine these basic operations into a "microarchitecture" -- a software-controlled datapath that connects digital memory with an arithmetic-logical unit -- on which one can then build more and more complex "layers" that will finally allow the writing of complex programs in human-readable programming languages. This knowledge not only forms the basis for understanding how something as complex as a modern computer actually works, but is also a pre-requisite for learning about many advanced topics in informatics.
After successfully completing the course, students will know the basic principles of how a computer functions, from the very basic building blocks (transistors and logical gates) to the more complex components (CPU, memory, buses, I/O interfaces).
Frontal lectures, weekly assignments, lab sessions
The final grade will be based on a student's Midterm (30%) and Final (70%) exam scores. Optional assignments and/or quizzes (corrected but ungraded) will offer continuous learning feedback throughout the semester.