The course is organized around a series of practical hands-on exercises which introduce the fundamentals of circuits, embedded programming, signal processing, simple mechanisms, actuation, and time-based behavior. The key objective is gaining an intuitive understanding of how information and energy move between the physical, electronic, and computational domains to create a desired behavior. The exercises provide building blocks for collaborative projects which utilize the essential skills and challenge students to not only consider how to make things, but also for whom we design, and why the making is worthwhile.
Discrete Mathematics II
This course is to acquaint students with basic number theory and basic combinatorial methods that provide a foundation for further studies in the field as well as for applications in related areas, in particular computer science.

Part A: Number Theory

Divisibility and Modular Arithmetic, Linear Congruence

Part B: Combinatorial Mathematics

Fundamental Principles of Counting, Inclusion-Exclusion, Recurrence Relations, Generating Functions

Upon completion of this course, students will be able to do the following:

LO1. Define and interpret the concepts of divisibility, congruence, greatest common divisor, prime, and prime-factorization.
LO2. Appreciate the role of Number Theory in the field of theoretical computing, particularly in modern cryptography.
LO3. Apply diverse counting strategies to solve varied problems involving strings, combinations, distributions, and partitions.
LO4. Recognize the power of abstraction and generalization, and apply logical reasoning to investigate theoretical Computer Science work with independent judgment.