Giter VIP home page Giter VIP logo

cs107e's Introduction

Computer Systems from the Ground Up

Announcements

Welcome to the Winter 2015 offering of CS107e.

Review the material in electricity, binary and hexadecimal numbers, and the unix command line. Test your knowledge by answering the questions in the introduction to each topic.

The CS107 Unix help sessions are now posted to the schedule here:

http://web.stanford.edu/class/cs107/officehours.html

Any CS107e student may attend any of the CS107 help sessions. There is no sign-up, just drop in. They are all held in Gates B08.

http://piazza.com/stanford/winter2015/cs107e

Course Information

Course Description:

CS107 is the third course in Stanford's introductory programming sequence. CS106 provides students with a solid foundation in programming methodology and abstractions, and CS107 follows on to give you the skills needed to build computer systems. The course will start with the microprocessor and move up to the C programming language, without skipping anything in between. The goal is to build a solid understanding of all aspects of how modern computers execute programs and how program development tools work.

Topics covered include: the ARM architecture, assembly language, and machine-level code; the C programming language; compilation, linking and loading; debugging; networking; memory organization and management; and controlling peripherals such as general-purpose IO pins, graphics, sound, and keyboards.

CS107e is an experimental approach that teaches the fundamental concepts of computer systems through bare metal programming on the Raspberry Pi. Bare metal programming means you will not run an operating system on the Raspberry Pi and will make minimal use of libraries. This course also serves as a short introduction to embedded systems.

This class is organized by weeks. Each week consists of two lectures on Fri and Mon, a lab on Tue evening, and a programming assignment which is due the following Mon at 12 midnight. Lecture and lab attendance is mandatory. There will be a short final project, but no exams.

Readings will be assigned from a variety of sources, including The C Programming Language, Kernighan and Ritchie.

Prerequisite: 106B or X, and consent of instructor.

Lectures: Mon & Fri 12:50-2:05 pm, Rm 107, Littlefield Center

Lab: Tue 7:00-9:00 pm, Gates 415

Lecturers: Dawson Engler, Pat Hanrahan, Phil Levis

CA: Isabel Bush

Office Hours:

  • Hanrahan, Mon 2:15 to 3:30 pm, Gates 370
  • Levis, Fri 11AM-Noon, Gates 412
  • Isabel, Wed noon-2pm, Gates B28; Thurs 4-6pm, Huang Basement

Schedule

In the readings, K&R is The C Programming Language (Kernighan and Ritchie), and EssentialC is a PDF available at http://cslibrary.stanford.edu/101. A digital copy of K&R is available to Stanford students via [Safari Books Online] (http://proquest.safaribooksonline.com.ezproxy.stanford.edu/book/programming/c/9780133086249). Please read the assigned readings before attending lecture and lab.

You should also read the Guides for each week.

Note that the schedule includes a guest lecturer Quinn Dunki on Mon Feb 2nd, and a tour of the Computer History Musuem on President's Day Feb 16th.

Topics Readings
Week 1 Jan 5
Lecture 1 (Mon): Introduction slides Review electricity, binary and hexadecimal numbers and bitwire operations, and the unix command line.
No Lab
Lecture 2 (Fri): Introduction to ARM (slides) : Blinking an LED (code) Start with Baking Pi (intro, ok01, ok02) and then read about ARM ASM.
Week 2 Jan 12
Lecture 3 (Mon): ARM Assembly and Machine Code
Lab 1 : Setup the Raspberry Pi
Assignment 1 : Larson scanner
Lecture 4 (Fri): Introduction to C
Week 3 Jan 19
Martin Luther King Holiday - No Class
Lab 2 : Below C Level
Assignment 2 : Clock
Lecture 6 (Fri): Functions
Week 4 Jan 26
Lecture 7 (Mon): Serial communication, ASCII and strings
Lab 3 : Programming a UART
Assignment 3 : String formatting and printing
Lecture 6 (Fri): Linking, loading, and starting
Week 5 Feb 2
Guest Lecture (Mon): Quinn Dunki, Building Veronica
Lab 4 : Understanding linking and loading
Assignment 4 : Debugger
Lecture 7 (Fri): Graphics and the framebuffer
Week 6 Feb 9
Lecture 8 (Mon): Keyboards
Lab 5: Setting up the framebuffer and keyboad
Assignment 5: Terminal program
Lecture 9 (Fri): Interrupts
Week 7 Feb 16
President's Day - Computer History Musueum Tour
Lab 6: Working with interrupts
Assignment 6: Interrupt-driven terminal program
Lecture 10 (Fri): Audio
Week 8 Feb 22
Lecture 11 (Mon): MIDI Input and Peripherals
Lab 7: PWM and sound
Assignment 7: Sound
Lecture 12 (Fri): Networking I
Week 9 Mar 2
Lecture 13 (Mon): Networking II
Lecture 14 (Fri): Memory management: sbrk/malloc
Week 10 Mar 9
Lecture 15 (Mon): Caches
Lecture 16 (Fri): To Linux and Beyond

Information

Labs

Assignments and grading

Late days

Collaboration policy

Resources

Readings

cs107e's People

Contributors

phanrahan avatar phil-levis avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

jpsgoncalves

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.