Courses and Schedule
Presented in conjunction with Columbia University’s Department of Mechanical Engineering, this course is a hands-on introduction to robotics comprised of both theoretical and lab components.
This course is a project-based course that explores the role of fundamental engineering disciplines in modern engineering design. The objective of the class project is two-fold: (a) design a robot capable of autonomously navigating pre-determined maze and executing posed task, and (b) assemble a toy car from pre-existing kit and program the toy car to execute specified movements. Through the design for manufacture process, the students will acquire understanding of fundamental concepts such as engineering design and mechanical design. Further, students will learn principles of solid modeling, sensor technology and locomotion. Each student is responsible for conceiving and executing an original design.
Advanced Robotics (only available Session 2)
In this session, students will be introduced to the fundamentals of advanced robotics topics in sensing, computer vision, communication, dynamics, control, and optimization. This material will be covered in parallel with coding and microcontroller hardware modules that reinforce these topics. Among these projects, students will work on sensing, control, and wireless communication with a robotic vehicle. They will also utilize sensing and controls technique to control a robot arm. Broadly, the course serves as a high-level overview to introduce students to the wide range of modern robotics.
Introductory Computer Science
The course offers a general introduction to computer science and programming in Python and assumes no prior programming background. At the end of the course, students will know how to think like a computer scientist, develop computational solutions to problems, and implement applications in Python.
The course covers the following topics:
- Variables and control structures (if statements, loops)
- Basic data types and data structures: integers, booleans, floats, strings, lists, tuples, sets, dictionaries.
- Functions, procedures, calls, parameters, arguments, return values, recursion.
- An introduction to object oriented programming: classes, instances, objects, attributes, methods, instance variables.
- Working with files.
- Graphical user interfaces (GUI).
- Understanding and fixing programming errors and dealing with exceptions.
- Fundamental algorithms such as linear and binary search.
- Solving problems using algorithmic thinking.
- Basic algorithm design and analysis.
- Additional topics such as an introduction to Machine Learning and Web Development may be covered based on student interest.
Each day will consist of short lectures and practice exercises. Students will work on these problems in small groups, supported by the instructor and the EEUs. In the last week of the course, each group will design and implementing a Minesweeper game, leveraging many of the topics learned in the course. This summer, the course will take place online, using an online collaborative programming environment and video conferencing.
Advanced Computer Science
This course addresses students who already have some basic background in computing and programming in any language (such as Java or Python). By the end of the course, students will know how to think like a computer scientist, develop computational solutions to problems at a high level, critically compare different algorithms that solve the same problem, and implement applications in Python from scratch.
The course consists of the following components, which build on each other:
- A brief review of the Python language, with a focus on object oriented programming.
- Formal analysis of algorithms and big-O notation. Students will implement, analyze and compare a number of comparison-based sorting algorithms.
- Theory and implementation of fundamental data structures such as stacks, queues, heaps, trees.
- Graphs and associated algorithms (tree traversals, shortest paths).
- An introduction to Artificial Intelligence and problem solving using heuristic state-space search, as well as adversarial search and game playing.
- Additional topics such as an introduction to Machine Learning and neural networks may be covered based on student interest.
Each day will consist of short lectures and practice exercises. As a final project during the last week of the course, students will develop AI players for a board game and have their AIs compete against each other in a tournament. This summer, the course will take place online. While students will work on exercises and projects independently, supported by the instructor and EEUs, we will foster a collaborative work environment using tools such as Git and collaborative code editors, as well as chat and video conferencing.
Students will pick one course per session; availability each session depends on interest and students may only take each course once.
Harnessing the Energy of the Sun (only available session 1)
This course combines elements of electrical, mechanical, and computer engineering, all supporting the engineering of solar energy systems. We’ll investigate two kinds: photovoltaic (conversion of solar energy to electrical form) and solar thermal (direct use of solar energy). Activities for the former include learning the basics of electricity in general and solar cells in particular, then designing a solar array to power a small student center. For the latter, you’ll learn how a solar oven works and build one at home to bake cookies, then learn how to design some simple digital circuits and program an Arduino with attached sensors to measure the performance of your solar oven. Finally, with your digital circuit knowledge, you’ll design and simulate a voting machine.
We have made several adjustments since the summer of 2020 and unfortunately, with our shift to the current virtual model, we are unable to offer a full Biomedical Engineering (BME) course due to its lab focus. However, we are incorporating BME in other program content. The now established online format does allow for more flexibility and we are working to utilize that advantage as much as possible.
We have a range of other wonderful courses, and encourage you to apply for an available class.
(only available session 1)
In this course, students will design new inventions. The goal is to develop an initial prototype that shows a proof-of-concept for student-chosen novel ideas. Every week, students will present their progress to the rest of the class and receive feedback as they push to iterate and improve on their devices. Throughout the course, students will build up their design skills with every class. Topics covered include ideation techniques, sketching, presentation, 3D modeling, rapid prototyping , electronics, mechanical components, and manufacturing techniques. Students will progress through researching, identifying a problem area, focusing in on a specific issue, developing initial solutions, designing through sketching and 3D modeling, and building initial prototypes using rapid prototyping techniques.
Students will select one elective to participate in during the session. The 2021 electives will be developed with our undergraduate team. Participating students can express interest in multiple electives, and will be placed according to interest and receive information about class specifics in the week before the program begins. If students need to adjust their placement, this will be accommodated in the early stages of SHAPE.
Students can use that Columbia Makerspace daily to build project prototypes. The MakerSpace is equipped with 3D printers, a laser cutter, and CNC tools for digital fabrication. Dr. John Kymissis and Dr. Hod Lipson are the faculty directors of the Columbia MakerSpace. Course EEUs will supervise student projects in the lab.
Students can use the MechTech lab to channel their ideas into creating tangible technology. Dr. Jeff Kysar is the faculty director of the space. Course EEUs will supervise student projects in the lab.
College Preparation Workshops
- Facilitated by the Columbia undergraduate admissions office
- 9:00 AM
- Course Check-In Time
- 9:10 AM
- Lecture/Professor Led Class
- 10:00 AM
- Course Office Hours
- 11:00 AM
- Project Time/Alternate Programming
- 12:00 PM
- Lunch Break
- 1:00 PM
- Course Check-In Time
- 1:10 PM
- Lecture/Professor Led Class
- 2:30 PM
- Course Office Hours
- 3:10 PM
- 4:00 PM
- Project Time/Alternate Programming/Optional Dismissal
- *subject to change