1 Course Overview Marco Gruteser Advanced Programming for Linux
1
Course Overview
Marco GruteserAdvanced Programming for Linux
2
The Instructor
• Marco Gruteser– Office Hours: Thu 3:30pm-4:20pm CoRE
505 or by appointment– Email: [email protected]– Rule of thumb: brief or urgent questions by
email, difficult questions face to face
3
My Background
• Assistant Professor WINLAB/ECE– Ph.D. from University of Colorado– Research Topics:
• Sensor systems• Location-aware systems• Privacy & Security
– Biggest software project:• 1yr 7 Headcount project at IBM T.J. Watson Research
Center• C, Java
4
BlueSpace
5
Orbit Wireless Network System
6
Your Background?• Send me email (question will be on website):
– Short bio (junior or senior year)?– What is your programming experience?
• Programming languages?– Did you take an OS or networking class?– Have you had any network programming
experience or class?– Why are you taking this course?– Which topic are you most interested in?– Do you prefer Java or Python?
7
The Course …
8
This Course is a practical course about writing larger
programs
9
How does it relate to other software classes?
• PM I – basic programming• PM II – algorithms and data structures• Computer architecture – how do you
program
10
More classes• Operating Systems – how do you write an
operating system to make application programming easier
• Advanced Programming – writing larger network-centric programs
• Telecommunication Networks – how do network protocols work
• Software Engineering – designing large team projects
11
Advanced Programming
• Writing larger network-centric programs from scratch– Using operating system services effectively– Using development tools– Good development style– Performance tuning– Enhancing security– Small (2-person) team projects
12
Topics • Linux development environment, coding style• Data and event-driven program models• Linux system calls• Multi-threaded programs and synchronization• Memory Allocation and Garbage Collection• Profiling and Performance Analysis• Secure Programming• Linux Kernel Modules and Device Drivers• Socket Network Programming Scripting Languages
13
Which application creates the largest share of Internet
traffic?
14
Programming Homework / Projects
• Minimal bittorrent client • Write a minimal webserver ~100 LOC• Use threads and process control to
improve performance• Implementation as a kernel module• Write a buffer overflow exploit to hack
into a server
15
Course Schedule
• A more detailed schedule will be available on the web before next class
• Currently, a syllabus is athttp://www.winlab.rutgers.edu/~gruteser/ap_s05/
16
Prerequisites
• Programming Methodology I/II• Coregistered with OS• C/C++ programming skills and
familiarity with basic development tools: editors, compilers
17
Course Organization• Biweekly Programming Homework
– Will be autograded– You can implement it on your own machine if you
like, but it has to run on our Debian server– You can test it there– All work must be done individually, unless
otherwise stated• Weekly reading assignments
– May be web-based quizzes• Expect in-class programming exams
18
Grading
40%Programming Homeworks &projects
10%Attendance & Participation
20%Mid-term
30%Final Exam
19
Required Textbook
• Advanced Programming in the UNIX environment,W. Richard Stevens, 1ed. Addison-Wesley.
20
Also recommended
• UNIX Network Programming Vol 1. (The Sockets Networking API),Stevens, Fenner, Rudoff, 3rd Edition, Addision Wesley
21
Next Class
• Linux Introduction• Reading: Chapter 1
22
Final Note
• This is a new course, please provide feedback