BIL 220 - Introduction to Systems Programming (Spring 2012)

A Leibniz Stepped Reckoner calculator (Courtesy of the Deutsches Museum, M√ľnchen)



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: Tuesday, 13:00-15:00

Office Hours: Friday, 13:00-15:00


Lectures: 

Thursday 

09:00-11:45 @ D1 (Section 1)

Thursday 

09:00-11:45 @ D3 (Section 2)


TAs:

Ali Caglayan

Oguzhan Guclu

alicaglayan-at-cs.hacettepe.edu.tr

oguzhanguclu-at-cs.hacettepe.edu.tr

Office: 218, Tel: 297 7500 / 123

Office: 218, Tel: 297 7500 / 123

Office Hours: Wednesday, 14:00-16:00      

Office Hours: Friday, 09:30-11:30


Course Description:

This course covers basic topics on systems programming: data representation, computer arithmetic, assembly language, code optimization, memory organization and management, linking, exceptional control flow, virtual memory, system-level I/O. The course will help students develop a deep understanding of inner workings of computer systems, enabling them to become better programmers.


Textbook:

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


Grading Policy:

Programming Assignments  

25%

Midterm I

15%

Midterm II

15%

Final

40%

Class participation

5%


Important Dates:

Midterm I

29 March 2012

Midterm II    

26 April 2012 03 May 2012

Final

30 May 2012


Detailed Schedule:


Week

Date  

Topic

From the book

Additional Readings

Assignments


1

16/2

Overview, bits, bytes [pdf]

1, 2.1

The Strange Birth and Long Life of Unix,
by Warren Toomey

2

23/2

Integer representations and integer arithmetic [pdf]

2.2-2.3

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

3

1/3

Floating point [pdf]

2.4

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

4

8/3

Assembly: Basics [pdf] [codes]

3.1-3.5

Anatomy of a Digital Pest
by Frank Rieger -- published in the German national newspaper Frankfurter Allgemeine Zeitung

PA1 (datalab) due,
PA2 (bomblab) out (.pdf)
(recitation notes)

5

15/3

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

3.6-3.7

6

22/3

Assembly: Data [pdf] [codes]  

3.8-3.14

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

PA2 (bomblab) due

7

29/3

Midterm 1 [exam] [sample solution]  

Smashing the Stack for Fun and Profit
by Aleph One

PA3(bufferlab) out (.pdf)
(recitation notes)

8

5/4

The Memory hierarchy [pdf]

6

9

12/4

Linking [pdf] [codes]

7

Linkers and Loaders
by Leon Presser and John R. White, ACM Computing Surveys, 4(3), 1972

PA3 (bufferlab) due

10

19/4

Exceptional control flow [pdf] [codes]

8

11

26/4

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

10, 5 (5.11-12 excl.)

PA4 (shelllab) out (.pdf) (.tar)

12

3/5

Midterm 2 [exam] [sample solution]

13

10/5

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

14

17/5

Memory system and dynamic memory allocation Course review

9.9-9.10

PA4 (shelllab) due

15

30/5

Final [exam] [sample solution]



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/spring2012/bil220