II - July 17–August 3, 2018
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
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 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.
Nikolas Melissaris holds a diploma in applied mathematics from the National Technical University of Athens and is currently a computer science Ph.D. student at the Graduate Center of the City University of New York. His research interests include cryptography, networks, computer security, and anything that has to do with preserving our privacy. Throughout his undergraduate and graduate years he has taught and tutored multiple mathematics and computer science courses.
Gilbert Pajela is a Ph.D. student at the Graduate Center of the City University of New York studying formal methods and software verification. He currently teaches a C++ programming lab at Hunter College. His research involves combining static analysis and model checking to prove correctness properties of C programs. He holds a B.S.E. in electrical engineering from the University of Pennsylvania and an M.S. in computer science from the New York Institute of Technology.
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.