Subject Description:

In "The Digital World", students will learn to use the principles of modularity and abstraction, two fundamental ideas in many areas of design. Modularity is the notion that simple components can be reused to build larger, more complex components. Abstraction is the idea that after a module is built, details on its internal workings can largely be ignored and a simpler description can be used to characterize its function. These two techniques will be taught in terms of constructing systems that interact with and control an external environment. Students will learn object-oriented programming (OOP) in the Python programming language. OOP is a style of software engineering that applies the principles of modularity and abstraction to both code execution and data representation. The course will also cover how to model state machines using abstraction provided in OOP.

Learning Objectives:

At the end of the term, students will be able to:

  • Understand basic programming concepts, and simple data structures
  • Understand the use of modularity and abstraction in building complex systems from simple sub-systems
  • Encode systems that respond to environmental stimuli as state machines
  • Develop confidence in their ability to program and debug in the Python language
  • Work effectively in teams 

Delivery Format*:


Grading Scheme:

Micro-Quiz 10%
Programming Quiz 10%
Homework 10%
Cohort Sessions 10%
2D Project 10%
1D Project 15%
Mid-term Exam 15%
Final Exam 20%

*The first number represents the number of hours per week assigned for lectures, recitations and cohort classroom study. The second number represents the number of hours per week assigned for labs, design, or field work. The third number represents the number of hours per week assigned for independent study.