lec1 - WINLABgruteser/ap_s05/lec1.pdf · Title: Microsoft PowerPoint - lec1.ppt Author: gruteser...

Post on 30-Sep-2020

1 views 0 download

transcript

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: gruteser@winlab.rutgers.edu– 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