Systems
Programming Course
Gustavo Rodriguez-Rivera
CS Common Core Courses
 Problem Solving and Object Oriented
Programming
 Programming in C
 Foundations of Computer Science
 Data Structures and Algorithms
 Computer Architecture
 Systems Programming
Objective
 Consolidate the programming skills from
the previous core courses.
 The System Programming course
concentrates on how programs run in user
space and how the interact with the OS.
 It does not cover OS internals. That will be
covered in the Operating Systems Course.
Objective (cont.)
 It solidifies the programming skills by
having the students write large programs
(>1000 lines).
 The students will use tools like IDEs,
debuggers, profilers, and source control to
help them write good and maintainable
code.
 The students will learn how to work on
teams.
Objective (cont.)
 Use of Scripting Languages.
 The students will learn to write multi-
process and multi-threaded programs.
Topics
 Address space. Structure of a Program. Text,
Data, BSS, Stack Segments.
 Review of Pointers, double pointers, pointers to
functions
 Use of an IDE and debugger to program in C
and C++.
 Executable File Formats. ELF, COFF, a.out.
 Development Cycle, Compiling, Assembling,
Linking. Static Libraries
 Loading a program, Runtime Linker, Shared
Libraries.
Topics (cont.)
 Scripting Languages. sh, bash, basic UNIX
commands.
 File creation, read, write, close, file mode.
 IO redirection, pipes
 Fork, wait, waitpid, signals.
 Directories, creating, directory list.
 Project: Writing your own shell.
 Source Control Systems (CVS, SVN) and
distributed (GIT, Mercurial)
Topics (cont.)
 Programming with Threads, thread creation.
 Race Conditions, Mutex locks.
 Socket Programming.
 Iterative and concurrent servers.
 Project: Implementing your own web server with
threads and process concurrency.
 Memory allocation. Problems with memory
allocation. Memory Leaks, Premature Frees,
Memory Smashing, Double Frees.
 Execution Profiling.
Textbook
 No official Textbook.
Class Notes
Selected Documents and Tutorials available
in the Internet
 Recommended Textbook.
Advanced Programming in the UNIX
Environment, Addison-Wesley, 1992.
Credits
 Dr. Douglas Comer wrote the initial
proposal for the Systems Programming
Course.
 The proposal was reviewed by Tim Korb,
Gustavo Rodriguez-Rivera and the
Systems Faculty.
Hardware Lab in the
Computer Architecture
Course
By Gustavo Rodriguez-Rivera
Introduction
 We want to teach the students that computer
programs are everywhere and not only in
Windows, Linux, and Macintosh computers.
 The students also program in
 Robots
 Phones
 Embedded Processors
 The students get hands on experience with both
hardware and software.
The Hardware Kit
 The students buy a kit from the department at cost.
 The kit contains, breadboard, wires, gates, PIC18
processor, LED display, speaker, and everything they
need to do projects with the PIC18 processor.
 PIC 18 processor:
 8 bit architecture
 2K RAM, 64KB Flash Memory for Programs
 USB communication
 Digital Input/Outputs, Analog inputs
 Timers, interrupts
 Assembly and C programming with Microchip’s MPLAB IDE
The Hardware Kit
Programming the PIC18
 The students write the Assembly or C
program in a PC running Windows and the
the MPLAB IDE environment.
 The program is assembled/compile and
downloaded to the PIC18 using a
programmer called PICKit2.
The MPLAB IDE
Projects
 Implementing a 7-Segment display
decoder using AND, OR, NOT gates.
 Ambient light using an RGB Full Color
LED, Pulse Wide Modulation (PWM),
push buttons, and the segment display.
 Configurable Alarm Clock with selectable
ring tones and interrupts.
 Interfacing the PC and a servo motor
using the USB port.
Thanks!
You are invited to see some of the student’s
projects here in the room.
The URL of the course is
http://www.cs.purdue.edu/homes/cs250

SystemsProgrammingCourse FSDFFSFDSDSDSFSFS

  • 1.
  • 2.
    CS Common CoreCourses  Problem Solving and Object Oriented Programming  Programming in C  Foundations of Computer Science  Data Structures and Algorithms  Computer Architecture  Systems Programming
  • 3.
    Objective  Consolidate theprogramming skills from the previous core courses.  The System Programming course concentrates on how programs run in user space and how the interact with the OS.  It does not cover OS internals. That will be covered in the Operating Systems Course.
  • 4.
    Objective (cont.)  Itsolidifies the programming skills by having the students write large programs (>1000 lines).  The students will use tools like IDEs, debuggers, profilers, and source control to help them write good and maintainable code.  The students will learn how to work on teams.
  • 5.
    Objective (cont.)  Useof Scripting Languages.  The students will learn to write multi- process and multi-threaded programs.
  • 6.
    Topics  Address space.Structure of a Program. Text, Data, BSS, Stack Segments.  Review of Pointers, double pointers, pointers to functions  Use of an IDE and debugger to program in C and C++.  Executable File Formats. ELF, COFF, a.out.  Development Cycle, Compiling, Assembling, Linking. Static Libraries  Loading a program, Runtime Linker, Shared Libraries.
  • 7.
    Topics (cont.)  ScriptingLanguages. sh, bash, basic UNIX commands.  File creation, read, write, close, file mode.  IO redirection, pipes  Fork, wait, waitpid, signals.  Directories, creating, directory list.  Project: Writing your own shell.  Source Control Systems (CVS, SVN) and distributed (GIT, Mercurial)
  • 8.
    Topics (cont.)  Programmingwith Threads, thread creation.  Race Conditions, Mutex locks.  Socket Programming.  Iterative and concurrent servers.  Project: Implementing your own web server with threads and process concurrency.  Memory allocation. Problems with memory allocation. Memory Leaks, Premature Frees, Memory Smashing, Double Frees.  Execution Profiling.
  • 9.
    Textbook  No officialTextbook. Class Notes Selected Documents and Tutorials available in the Internet  Recommended Textbook. Advanced Programming in the UNIX Environment, Addison-Wesley, 1992.
  • 10.
    Credits  Dr. DouglasComer wrote the initial proposal for the Systems Programming Course.  The proposal was reviewed by Tim Korb, Gustavo Rodriguez-Rivera and the Systems Faculty.
  • 11.
    Hardware Lab inthe Computer Architecture Course By Gustavo Rodriguez-Rivera
  • 12.
    Introduction  We wantto teach the students that computer programs are everywhere and not only in Windows, Linux, and Macintosh computers.  The students also program in  Robots  Phones  Embedded Processors  The students get hands on experience with both hardware and software.
  • 13.
    The Hardware Kit The students buy a kit from the department at cost.  The kit contains, breadboard, wires, gates, PIC18 processor, LED display, speaker, and everything they need to do projects with the PIC18 processor.  PIC 18 processor:  8 bit architecture  2K RAM, 64KB Flash Memory for Programs  USB communication  Digital Input/Outputs, Analog inputs  Timers, interrupts  Assembly and C programming with Microchip’s MPLAB IDE
  • 14.
  • 15.
    Programming the PIC18 The students write the Assembly or C program in a PC running Windows and the the MPLAB IDE environment.  The program is assembled/compile and downloaded to the PIC18 using a programmer called PICKit2.
  • 16.
  • 17.
    Projects  Implementing a7-Segment display decoder using AND, OR, NOT gates.  Ambient light using an RGB Full Color LED, Pulse Wide Modulation (PWM), push buttons, and the segment display.  Configurable Alarm Clock with selectable ring tones and interrupts.  Interfacing the PC and a servo motor using the USB port.
  • 18.
    Thanks! You are invitedto see some of the student’s projects here in the room. The URL of the course is http://www.cs.purdue.edu/homes/cs250