Date: Sept. 2007
Course Code and Name CMPE 230 Systems Programming
Course Type Semester Credits Lecture (hours/week) P.S. (hours/week) Laboratory (hours/week)
Required Spring 2008 4 3 2  
Instructor Can Özturan
Catalog Description Overview of compilers, interpreters, assemblers, linkers and loaders. Unix environment and system calls. Signals and exceptions. Localization and Unicode. Perl and CGI Programming. Assembly language programming. Introduction to multithreading. Introductory Graphical User Interface (GUI) programming.
Course Objectives This course will enable the student to:
1.  Learn the idea behind various system software.
2.  Learn and compare the functionalities  of various system software. 
3. Learn how to use the Unix environment and Unix tools, 
4. Learn multithreaded programming with OpenMP.
5. Design and develop system software with Perl.
6.  Get introduced to assembly language programming. 
Prerequisite(s) CMPE 160
Textbook(s) Learning Perl, Randal Schwartz and Tom Phoenix
Other References 1) Blanchette and SummerField, C++ GUI Programming with Qt                   2) Ayala, K. J., The 8086 Microprocessor: Programming and Interfacing the PC, West Publishing Company,  1995.                                                   3) OpenMP Application Programming Interface   (http://www.openmp.org/drupal/mp-documents/spec25.pdf)
             
Grading Method Quantity Percentage
Midterm Exam(s) 2 34
Project(s) 3 or 4 36
Final 1 30
   
    Percentage
Course Content Mathematics and Basic Science 0
Engineering Science 50
Engineering Design 40
Other (social sciences etc) 10
 
  Topics
1. System Software Overview: assemblers, linkers, loaders, compilers interpreters, script languages.
2 Unix environment, Makefiles, Intel tools, Memory layout of C programs.
3. Multithreaded Programming with OpenMP.
4. Introductory Graphical User Interface Programming with Qt
5. Perl Programming: variables, associative arrays, flow control, I/O,  file handling, formats, references, pattern matching, subroutines, packages, modules.
6. Introductory X86 Assembly language programming: x86 family, addressing modes,  types of instructions, segmented memory, 8086 registers, data  movement, arithmetic, logical, jump, comparison, stack, dos instructions, A86 and GNU assemblers, .