Course Catalog Description: 14:332:456 Network-Centric Programming (3)
Advanced programming with a focus on developing software for networked systems using Linux as a reference platform. Topics: Programming Tools, Software Design, Environment of a UNIX Process, Memory Allocation, Garbage Collection, Process Control, Process Relationships, Signals, Reliable Signals, Threads, I/O Multiplexing, Datagram and Stream Sockets, Multicasting, Device Driver and Kernel Programming, Secure Programming.
1. An ability to develop both connection-oriented and connectionless network programs, define the difference between them, and to choose the appropriate primitive for different applications requirements.
2. An ability to understand the performance characteristics and implement both incremental and concurrent network servers using threads or processes.
3. An ability to understand the essence of security exploits. Preventing, discovering, and correcting security weaknesses in network software, in particular access control, buffer overflow, and SQL insertion.
4. An understanding of the Linux IO Multiplexing, process address space organization, and development tools.
5. The ability to understand and implement the key elements of the World Wide Web, the HTTP protocols and web servers.
- Homeworks (40 %)
- Class Discussions (10%)
- One Mid-Term Exams (20 %)
- Final Exam (30 %)
N = none S = Supportive H = highly related
Outcome |
Level |
Proficiency assessed by |
(a) an ability to apply knowledge of Mathematics, science, and engineering |
H |
HW Problems, Exams |
(b) an ability to design and conduct experiments and interpret data |
S |
Design problems in HW and Exams |
(c) an ability to design a system, component or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability |
N |
|
(d) an ability to function as part of a multi-disciplinary team |
N |
|
(e) an ability to identify, formulate, and solve ECE problems |
H |
HW Problems, Exams |
(f) an understanding of professional and ethical responsibility |
N |
|
(g) an ability to communicate in written and oral form |
S |
HW Problems, Class Discussions |
(h) the broad education necessary to understand the impact of electrical and computer engineering solutions in a global, economic, environmental, and societal context |
N |
|
(i) a recognition of the need for, and an ability to engage in life-long learning |
S |
Lectures, subsequent courses |
(j) a knowledge of contemporary issues |
S |
HW Problems, Exams |
(k) an ability to use the techniques, skills, and modern engineering tools necessary for electrical and computer engineering practice |
H |
HW (including problem solution simulation and design) |
Basic disciplines in Electrical Engineering |
N |
|
Depth in Electrical Engineering |
S |
HW, Quizzes, Exams |
Basic disciplines in Computer Engineering |
H |
HW, Exams |
Depth in Computer Engineering |
H |
HW, Exams |
Laboratory equipment and software tools |
H |
Linux, GNU C Development Env. |
Variety of instruction formats |
S |
Lectures, Laboratory problem sessions, Office hour discussions |
Week 1: Course Introduction; Unix Programming Environment: Build Systems, Configuration Management, Debuggers
Week 2: Unix I/O: Standard I/O library, I/O system calls, redirection; Manipulating files and directories, File Access Control
Weeks 3 and 4: File access over the HTTP Protocol; Sockets Network Programming: Stream and Datagram sockets; Process Address Space and Environment, Process Control and Relationships
Weeks 5 and 6: Basic and Reliable Signals
Week 7: Server design
Weeks 8 and 9: Threads, synchronization primitives, I/O Multiplexing, hourly exam
Week 10: Broadcasting and Multicasting
Weeks 11: Device Drivers: Interrupt Handling, Char, Block, and Network Drivers, Kernel Development
Weeks 12 and 13: Secure Programming: Access Control, Buffer Overflow, Covert Channels, Secure Sockets
Week 14: Network Programming in Java, Remote Procedure Calls
Weeks 15 and 16: Review and Final Exam
(b) Engineering Topics (Science and/or Design): 3.0 credit hours
(c) General Education: 0.0 credit hours
Total credits: 3