BBM 341 - Systems Programming (Fall 2012)

Lectures: Monday 13:00-15:45 @D1 (Section 1), @D2 (Section 2)

Curiosity’s tracks on Mars, 22 Aug 2012, Image Credit: NASA/JPL-Caltech


Instructor:   

Aykut Erdem (Section 1)

Erkut Erdem (Section 2)

aykut-at-cs.hacettepe.edu.tr

erkut-at-cs.hacettepe.edu.tr

Office: 111, Tel: 297 7500 / 146

Office: 114, Tel: 297 7500 / 149

Office Hours: To be announced.

Office Hours: To be announced.


Lectures: 

Monday 

13:00-15:45 @ D1 (Section 1)

Monday 

13:00-15:45 @ D2 (Section 2)


TA:

Kazım Sarıkaya

kazimsarikaya-at-cs.hacettepe.edu.tr

Office: 218, Tel: 297 7500 / 130

Office Hours: To be announced.      


Course Description:

The subject matter of this third-year undergraduate course is to provide a programmer's perspective on how computer systems execute programs and store data. The course covers major concepts such as data representation, computer arithmetic, assembly language, code optimization, memory organization and management, linking, exceptional control flow, virtual memory, system-level I/O.

The main aim of the course is to help students to gain deep understanding of inner workings of computer systems, enabling them to become better programmers. Students will have hand-on experiences via a set of programming assignments. They will also read and discuss some research papers from the current literature.


Textbook:

Computer Systems: A Programmer’s Perspective, 2/E (CS:APP2e), Randal E. Bryant and David R. O'Hallaron, Prentice Hall, 2011


Prerequisites:

The course requires the students to have basic knowledge of computer architecture. Since students are also asked to complete some systems programming assignments, good programming skills (especially in C) will be helpful.


Grading Policy:

Written Assignments  

5%

Programming Assignments

   

20%

Midterm exam

30%

Final exam

40%

Class participation

5%


Important Dates:

Programming Assignment 1

1 November 201219 October 2012

Programming Assignment 2

19 November 2012

Programming Assignment 3

17 December 2012

Midterm exam

19 November 2012

Final exam

To be announced.


Detailed Schedule:


Week

Date    

Topic

From the book

Additional Readings

Assignments


1

10/1

Overview, bits, bytes [pdf]

1, 2.1

The Creation of the UNIX Operating System

2

10/8

Integer representations and integer arithmetic [pdf]

2.2-2.3

3

10/15

Floating point [pdf]

2.4

What Every Computer Scientist Should Know About Floating-Point Arithmetic,
David Goldberg, ACM Computing Surveys, 23(1), 1991

PA1 (datalab) out (.pdf) (.tar)

4

10/22

No class (Religious Holiday)

5

10/29

No class (Republic Day)

PA1 due

6

11/5

Assembly: Basics [pdf] [codes]

3.1-3.5

An Introduction to 64-bit Computing and x86-64,
Jon Stokes, arstechnica.com, 2002

7

11/12

Assembly: Control structures and procedures [pdf] [codes 1] [codes 2]

3.6-3-7

8

11/19

Midterm exam [exam] [sample solution]

PA2 (bomblab) out (.pdf)

9

11/26

Assembly: Data [pdf] [codes]

3.8-3.14

The Internet Worm Program: An Analysis,
Eugene H. Spafford, Purdue Technical Report CSD-TR-823, 1988

10

12/3

The Memory hierarchy [pdf]

6

PA2 due

11

12/10

Linking [pdf] [codes]

7

12

12/17

Exceptional control flow [pdf] [codes]

8

PA3 out (.pdf) (.tar)

13

12/24

System-level I/O. [pdf] [codes]
Code optimization [pdf] [codes]

10, 5 (5.11-12 excl.)

14

12/31

Virtual memory [pdf]

9.1-9.8

Virtual Memory Management in the VAX/VMS Operating Systems
by Henry M. Levy and Peter H. Lipman, Computing Surveys, 4(3), 1972

PA3 due



Communication:

The course webpage will be updated regularly throughout the semester with lecture notes, programming and reading assignments and important deadlines. All other communications will be carried out through Piazza. Please enroll it by following the link https://piazza.com/hacettepe.edu.tr/fall2012/bbm341


Policies:

All work on assignments must be done individually unless stated otherwise. You are encouraged to discuss with your classmates about the given assignments, but these discussions should be carried out in an abstract way. That is, discussions related to a particular solution to a specific problem (either in actual code or in the pseudocode) will not be tolerated.
In short, turning in someone else’s work, in whole or in part, as your own will be considered as a violation of academic integrity. Please note that the former condition also holds for the material found on the web as everything on the web has been written by someone else.