COMS 253 Intro to Systems Programming*
	COMS 253 INTRODUCTION TO SYSTEMS PROGRAMMING
Provide understanding of writing system programs on Linux or Unix systems using C (or C++). Structure of C programs: functions, scope, arrays, structures, pointers, and run-time memory management. Introduction to build systems, debugging techniques, shell scripting and process management. Security vulnerabilities, buffer overflow and dynamic memory analysis. Basic systems programming including topics such as streams, buffers, pipes, system calls, processes, threads and libraries for Linux and Microsoft Windows. 
 
	
		
			COMS 253Intro to Systems Programming*
		
	Please note: This is not a course syllabus. A course syllabus is unique to a particular section of a course by instructor. This curriculum guide provides general information about a course.
		I. General Information
	
		
			Department
		
Engineering, Physical, and Computer Sciences Academic
	 
		II. Course Specification
	
		
			Course Type
		
			{D7A8FC71-978F-4003-9933-512C476323B2}
		
	 
		
			Credit Hours Narrative
		
			3 credits
		
	 
		
			Semester Contact Hours Lecture
		
			45
		
	 
		
			Semester Contact Hours Lab
		
			0
		
	 
		
			Semester Contact Hours Clinical
		
			0
		
	 
		
			Prerequisite Narrative
		
			COMS 250
		
	 
		III. Catalog Course Description
	
		COMS 253 INTRODUCTION TO SYSTEMS PROGRAMMING
Provide understanding of writing system programs on Linux or Unix systems using C (or C++). Structure of C programs: functions, scope, arrays, structures, pointers, and run-time memory management. Introduction to build systems, debugging techniques, shell scripting and process management. Security vulnerabilities, buffer overflow and dynamic memory analysis. Basic systems programming including topics such as streams, buffers, pipes, system calls, processes, threads and libraries for Linux and Microsoft Windows. 
	 
		IV. Student Learning Outcomes
	
		Upon completion of this course, a student will be able to: 
			- 1.  Explain basic concepts in systems programming and operating a command-line interface.
 - 2.  Utilize the methods and techniques for designing and implementing system-level programs.
 - 3.  Write system software with the aid of sophisticated OS services, programming languages and utility tools.
 - 4.   Use C (or C++) memory management, including pointer arithmetic and heap allocation.
 - 5.  Understand Unix / Linux programming using C (or C++).
 
		
	 
		V. Topical Outline (Course Content)
	
		I.  Structure of C programs:
	- Functions
 
	- Scope
 
	- Arrays
 
	- Structures
 
	- Pointers
 
	- Run-time Memory Management
 
II.  Introduction to
	- Build Systems
 
	- Debugging Techniques
 
	- Shell Scripting
 
	- Process Management
 
	- Security vulnerabilities
 
	- buffer overflow
 
	- dynamic memory analysis
 
III.  Systems Programming
	- Streams
 
	- Buffers
 
	- Pipes
 
	- System Calls
 
	- Processes
 
	- Threads
 
	- Libraries for Linux and Microsoft Windows
 
	 
		VI. Delivery Methodologies
	
		
			Required Exams
		
			The course will include both mid-term and final exams.
		 
	 
		
			Assessment Strategy Narrative
		
			Projects and exam problems will be used to assess all 5 course learning outcomes.
		 
	 
		
			Specific Course Activity Assignment or Assessment Requirements
		
			The course will include at least one term project.  This project will be used for assessment along with mid-term and final exams.