Introduction to Programming in C

Open to students entering grades 9 through 12 or freshman year of college in the fall
I - June 24–July 12, 2019
II - July 16–August 2, 2019
Days & Time:
Monday–Friday, 11:10 a.m.–1:00 p.m. and 3:10–5:00 p.m.
Leighanne Hsu, Richard Townsend

No previous programming experience is required, but participants should have an aptitude for logical reasoning and systematic thinking.

“We were encouraged to take different approaches to a code, which promoted creativity as well as problem-solving.”  —   Agustina Garate Griot

Course Description

An intensive course designed to develop logic and programming skills through immersion in the fundamentals of C. Programming projects involving mathematical problems and word games challenge students to develop their logical reasoning, systematic thinking, and problem-solving skills. Students learn the structure and features of a fundamental programming language as they implement solutions in C. In addition to teaching programming techniques, the course will cover an overview of fundamental computing concepts including data structures, library design, and memory management. Labs are carried out in Linux Virtual Machines configured for the class and installed on the students’ personal laptop computers.

Participants are expected to bring laptops for this class. Laptops can either be a PC or a Mac, but should have at least 10GB of free space.

Students who have no programming background might consider taking Computer Programming for Beginners: Coding in Java.


Leighanne Hsu

Leighanne Hsu holds a master’s degree in computer science from Columbia University and is currently a Ph.D. student at the University of Delaware. She holds a bachelor's degree from The College of New Jersey, where she tutored computer science for three years. Her areas of interest include natural language processing, particularly machine translation, speech processing, and dialogue systems, as well as other fields in artificial intelligence.

Richard Townsend

Richard Townsend is a Ph.D. student at Columbia University studying programming languages and compilers under Stephen A. Edwards and Martha A. Kim. His research focuses on the use of functional languages and high-level optimizations to produce efficient hardware designs. This work revolves around his research group's current project: an optimizing Haskell-to-Hardware compiler. He holds a B.A. in computer science from Oberlin College and an M.S and M.Phil. in computer science from Columbia.

Back to the Course Guide

Specific course detail such as hours and instructors are subject to change at the discretion of the University. Not all instructors listed for a course teach all sections of that course.