MATH 221: CS Fundamentals II
Full course for one semester. A second course in computer science, an introduction to computer systems and to advanced programming. The goal of this course is to introduce students to how programming systems are constructed. We'll survey how computer systems function by exploring digital logic, processor design, and machine-level programming. We'll explore how programming language systems are constructed by doing some "meta-programming": we write code that reasons about other programmers' code in the programming language Standard ML. We'll complete the course by examining how the cloud infrastructure works through describing concurrent, communicating processes in the Go programming language.
There will be significant programming projects exploring a number of these topics. Students are expected to be comfortable writing code in Python and will be expected to pick up the languages ML and Go, and in a computer processor's assembly language.
Prerequisite: Mathematics 121 or the equivalent.
Tools and Resources
Fundamentals of Digital Logic
Elements of ML Programming
The Go Programming Language
Part I: Circuits and machine organization. (4 weeks)