Program In Computing
About the Program
The Program In Computing (PIC) offers a variety of courses that use programming languages such as Python, C++, JavaScript, and Java. Although it is possible to learn programming principles in a language agnostic manner, in most of our courses, we teach programming by using a specific language. For example, memory management and data structure design are taught using C++, inheritance and its relevance for creating graphical user interfaces are taught using Java, data science techniques and machine learning workflows are taught using Python. We structure our courses this way for two reasons.
- There is no "best" programming language, but there is often a programming language that is most suitable for a specific job. Our courses give our students firsthand experience of this phenomenon.
- By teaching the relevant parts of a programming language alongside its applications, we believe that the content becomes much more accessible than if we expect our students to self-teach the language that they need. There are enough major differences between the languages used in our courses to ensure that this is a good use of students' time.
The information below provides a quick overview of the courses that we offer. Click on any of the titles to obtain more information or experiment using the PIC Course Planner! Contact Michael Andrews if you have any questions about the program.
PIC 1: Spreadsheets, Programming, and Their Application to Data Science
This course begins with computer fundamentals such as saving and retrieving files in an organized way, essential skills for almost everyone's personal and professional life.
Next, spreadsheets are used to introduce core coding concepts like data types, syntax, and functions. A study of spreadsheets is independently valuable because they are used in a variety of careers and education settings for data collection, presentation, manipulation, and analysis. In this course, we use data analysis tools like curve fitting, pivot tables, and weighted averages.
The course concludes with a four-to-five week, down-to-earth introduction to the Python programming language. Students are introduced to algorithmic thinking and key coding concepts like control flow and functions. The goal is for everyone to leave the class with a good sense of what programming is about. This course gives a gentle introduction to programming that encourages participation in other courses like PIC 16A.
PIC 10A: Introduction to Programming
This course teaches the fundamentals of programming in C++. The course is titled "Introduction To Programming" because from the 1980s until 2026, this course was the first in the sequence and students needed to take it before any of the others. However, as the "Plan Your Courses" page explains carefully, the times they are a-changin, and from 2027 onwards, there is a Python-centric track available to PIC students that begins with PIC 1.
C++ was developed in the 1980s, but it is still used extensively today and it remains one of the world's most popular programming languages. C++ is used by operating systems, web browsers, and in game development. C++ is used in medical devices, robotics, and financial systems. In AI and machine learning infrastructure, useful Python libraries are often written in C++ for speed. C++ serves as the foundational backbone for infrastructure where raw performance, low latency, and direct hardware control are mandatory.
From an educational point of view, learning C++ is useful because many fundamental concepts (data types and memory management, for example) are addressed explicitly by the language. Even if most applications that interest you are best served by other languages, knowing C++ can improve your understanding of programming so that these other languages are easier and quicker to learn, and so that you can better appreciate the advantages and disadvantages of different languages for solving different problems.
PIC 10A covers a lot of ground. Upon completion of the class, a student will be familiar with variables, control flow, functions, console input/output, pointers, references, and classes (object oriented programming). Students who complete this course will be well prepared for more advanced courses about C++ as well as PIC courses in other programming languages. An ambitious and imaginative student will already be able to implement their own interesting applications in C++.
PIC 16A: Python with Applications I
This course covers the fundamentals of the Python programming language in lots of detail. Until 2026, students took this course after PIC 10A. From 2027 onwards, students can take this course after PIC 1 or PIC 10A.
Python is very popular because it offers thousands of packages for many tasks. Although C++ allows for more optimized code, for performance-critical tasks, Python easily connects to fast C/C++ libraries under the hood. It is the primary language for machine learning (PyTorch and TensorFlow) and data science (Pandas and NumPy). Some students prefer Python to C++ because its syntax is closer to standard English and it is higher-level language, automating tasks like memory management.
As a student in this course, you will master the details of the language, like how Python variables behave, and how Python functions and methods pass their arguments. Understanding such details thoroughly is valuable because many other coding languages behave in a similar way. You will learn how to use Python data structures like lists, tuples, sets, and dictionaries effectively. You will also learn about two of the most popular libraries for data science, NumPy and Pandas, and you will see applications to data science throughout the course, particularly on your homework assignments.
PIC 20A: Principles of Java Language with Applications
In this Java course, students focus on inheritance and polymorphism. These concepts are applied to build graphical user interfaces from scratch and to understand exceptions, a mechanism by which many programming languages communicate errors.
PIC 40A: Introduction to Programming for Internet
In this course, students build interesting web pages and they learn the valuable skill of managing projects with many files that use multiple languages. A variety of languages are discussed.
- HTML (HyperText Markup Language) is the standard markup language used to create and structure the content of web pages.
- CSS (Cascading Style Sheets) is the standard stylesheet language used to design and format the visual presentation of web pages written in HTML. In particular, CSS controls colors, fonts, and layouts.
- JavaScript is a programming language that is used heavily in web development to build interactive and dynamic web pages.
- Backend scripting languages like PHP or Node.js allow one to generate dynamic web page content before the page is sent to the user's web browser. This way, users cannot see the code that executes behind the scenes (often useful for security reasons). These languages also allow one to perform server-side operations like creating files.
PIC 10B: Intermediate Programming
In this C++ course, students learn how to manage memory on the heap and how to implement data structures like linked lists and binary search trees together with their iterators. Many useful aspects of the C++ language are covered such as operator overloading, and copy and move semantics.
PIC 10C: Advanced Programming
In this C++ course, a variety of more advanced topics are chosen by the instructor. Topics may include advanced data structures like red-black trees, function templates and class templates, metaprogramming, threading, the command line, and version control.
PIC 16B: Python with Applications II
In this Python course, students delve deeper into more advanced applications of the Python programming language. Students acquire data sets via databases and/or web-scrapers, perform complex data analysis, and they use machine learning pipelines for structured, image, and text data sets.