Difference between revisions of "TECS"

From HacDC Wiki

Line 79: Line 79:

== Resources ==
== Resources ==
[ Course Website]
* [ Course Website]
[ Short video introduction to the course]
* [ Short video introduction to the course]
[ Longer video introduction to the course]
* [ Longer video introduction to the course]
[ Textbook on Amazon]
* [ Textbook on Amazon]

Revision as of 09:00, 21 September 2010

The Elements of Computing Systems: Building a Modern Computer from First Principles

Course Overview

Copied from course-provided syllabus: The course objective is to integrate key topics from algorithms, computer architecture, operating systems, compilers, and software engineering, in one unified framework. This will be done constructively, by building a general-purpose computer system from the ground up. In the process, we will explore many ideas and techniques used in the design of modern hardware and software systems, and discuss major trade-offs and future trends. Throughout this journey, you will gain many cross-section views of the computing field, from the bare bone details of switching circuits to the high level abstraction of object-based software design.


1) A copy of the book is highly recommended. It can be purchased from Amazon for less than $30. Most of the chapters can also be downloaded as PDFs from the books website. 2) A computer to run the examples and assignments. The course software is written in Java so it will run Windows, Linux or Mac. 3) Some programming experience is also recommended.


The software necessary for the course is freely available from the books website: [1]


We will be using the syllabus provided by the book which follows the chapters in order. The lecture/discussion will loosely follow the slides provided on the course website.

List of Lectures

This is the proposed schedule based on the course-provided syllabus. Changes are likely to happen and I will try to keep this updated to reflect those.

Week Date Topics Covered
1 September 22, 2010 Getting Started & Boolean Arithmetic
2 September 29, 2010 Sequential Logic
3 October 6, 2010 Machine Language
4 October 13, 2010 Computer Architecture
5 October 20, 2010 Assembler
6 October 27, 2010 Virtual Machine I
7 November 3, 2010 Virtual Machine II
8 November 10, 2010 High Level Language
9 November 17, 2010 Compiler I
10 November 24, 2010 Compiler II
11 December 1, 2010 Operating System I
12 December 8, 2010 Operating System II & More Fun To Go


Copied from course-provided syllabus: This is mostly a hands-on course, which evolves around implementing a series of hardware and software modules. Each module development task will be accompanied by a design document and an executable solution (illustrating what the module is supposed to do), a detailed implementation document (proposing how to build it), and a test script (specifying how to test it). The homework assignments will be spread out evenly, so there will be no special “crunch” toward the semester’s end. Each lecture will start by reviewing the work that was done thus far, and giving instructions on what has to be done next. The homework assignments can be done in pairs.

Each week/chapter is completely modular and self-contained. It is not necessary to complete an earlier chapter in order to participate in a later one. Therefore students are free follow along in whichever order they choose or audit only those weeks that are of interest to them.