OMSCS Seminar: Introduction to C Programming

  • Overview
  • Course Content
  • Requirements & Materials
Overview

OMSCS Seminar: Introduction to C Programming

Course Description

Intended for students used to high-level languages such as Ruby and Python, this seminar teaches C, the lingua franca for systems programming over the past forty years due to its elegance, efficiency, and low-level (close to the hardware) capabilities. We will tackle C's syntax, type system, and program layout, as well as arrays, pointers, and control structures, giving students the ability to translate familiar techniques into this lower-level language. In this project-based course, students will be guided through the implementation of an interpreter for a very basic Lisp, designed to give them a sense of what the computer is doing, whether they use low-level languages or continue with high-level ones.

Course Content

Modules 1-2:

  • Why Use C? How C Works; What Compilers Do
  • Base Types; Functions; and Program Structure

Modules 3-4:

  • Pointers; Arrays and Strings; Undefined Behavior Is Bad/Good/Undefined
  • Structs; Stack; and Heap 

Modules 5-6:

  • Objects and Ownership; the FILE Object
  • Security; Enums; Function Pointers

Modules 7-8:

  • Resizeable Arrays; Unions; Bits
  • Debugging

Modules 9-10:

  • What malloc Actually Does; Ring Buffers; Error Handling; setjmp and longjmp and goto
  • The C Preprocessor; Programming in the Large

Modules 11-13:

  • Case Study—Reference Counting
  • Case Study—Hash Table
  • Concurrency
Requirements & Materials

Materials

RECOMMENDED (Student will receive): 

All content is available in Canvas.

Session Details

Who Should Attend

This seminar is designed for OMSCS students and alumni interested in learning C; the language, its philosophy, its tool chain, and techniques commonly found in low-level programming. You will apply these concepts by building an interpreter for a language called PSI. 

Computer science students coding on computers

What You Will Learn

  • Implementation of basic data structures in C
  • Building an interpreter language called PSI
  • Compilation, debugging, and toolchains common to systems development
  • File I/O, memory management, C's standard library
  • Tools necessary to implement common data structures like hash tables and resizable arrays
Female professional in computer science lab looking at tablet

How You Will Benefit

  • Gain fluency in C programming, a foundational skill for systems-level and performance-critical software.
  • Improve your understanding of how high-level code translates into machine-level operations.
  • Complete a hands-on project that simulates real-world interpreter development.
  • Grow Your Professional Network icon
    Grow Your Professional Network
  • Taught by Experts in the Field icon
    Taught by Experts in the Field

TRAIN AT YOUR LOCATION

We enable employers to provide specialized, on-location training on their own timetables. Our world-renowned experts can create unique content that meets your employees' specific needs. We also have the ability to deliver courses via web conferencing or on-demand online videos. For 15 or more students, it is more cost-effective for us to come to you.

  • Save Money
  • Flexible Schedule
  • Group Training
  • Customize Content
  • On-Site Training
  • Earn a Certificate
Learn More

Want to learn more about this course?