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. 

Credits

3 credits

Semester Contact Hours Lecture

45

Semester Contact Hours Lab

0

Semester Contact Hours Clinical

0

Prerequisite

COMS 250 with a "C" or better

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 with a "C" or better

Repeatable

No

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:

  1. Functions
  2. Scope
  3. Arrays
  4. Structures
  5. Pointers
  6. Run-time Memory Management

II.  Introduction to

  1. Build Systems
  2. Debugging Techniques
  3. Shell Scripting
  4. Process Management
  5. Security vulnerabilities
  6. buffer overflow
  7. dynamic memory analysis

III.  Systems Programming

  1. Streams
  2. Buffers
  3. Pipes
  4. System Calls
  5. Processes
  6. Threads
  7. 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.