15-110: Principles of Computing

Spring 2024 Fall 2023
Spring 2023 Fall 2022
Spring 2022 Fall 2021
Spring 2021 Fall 2020
Spring 2020 Fall 2019
Fall 2016

This is a course in fundamental computing principles for students with little to no computing background. It covers the following topics:


07-070: Teaching Techniques for Computer Sciencec

Spring 2024 Fall 2023

This course is a broad introduction to teaching techniques and DEI issues in the context of computer science education. It is targeted to first-time undergraduate and graduate SCS TAs, with the goal of providing instruction, hands-on practice, and feedback to TAs to improve their instructional proficiency.


CS Scholars Programming Course

Summer 2023
Summer 2022
Summer 2021

The Computer Science Scholars program brings high school students from underrepresented backgrounds to the CMU campus for four weeks to take courses in programming and math, learn about the field of computer science through seminars and industry visits, and complete a specialized project. The programming component of this program gives students an introduction to basic Python programming.


05-391/05-891: Designing Human-Centered Software

Spring 2022

This course is an introduction to designing, prototyping, and evaluating user interfaces. If you take only one course in Human-Computer Interaction, this is the course for you. It covers the following learning goals:


SAMS Programming Course

Summer 2019
Summer 2018

The Summer Academy for Mathematics and Science (SAMS) program brings high school students to the CMU campus for six weeks to take courses in math, programming, science, and standardized testing, while also completing a specialized project. The programming component of this program gives students an introduction to basic Python programming.


15-112: Fundamentals of Programming and Computer Science

Spring 2019
Fall 2018
Spring 2018
Fall 2017
Spring 2013

A technical introduction to the fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. Starting from first principles, we will cover a large subset of the Python programming language, including its standard libraries and programming paradigms. We will also target numerous deployment scenarios, including standalone programs, shell scripts, and web-based applications. This course assumes no prior programming experience. Even so, it is a fast-paced and rigorous preparation for 15-122. Students seeking a more gentle introduction to computer science should consider first taking 15-110. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.


05410/05610: User-Centered Research & Evaluation (UCRE)

Fall 2014

This course provides and overview and introduction to the field of human-computer interaction (HCI). It introduces students to tools, techniques, and sources of information about HCI and provides a systematic approach to design. The course increases awareness of good and bad design through observation of existing technology, and teaches the basic skills of task analysis, and analytic and empirical evaluation methods. This is a companion course to courses in visual design (51-422) and software implementation (05-430, 05-431). When registering for this course, undergraduate students are automatically placed the wait list. Students will be then moved into the class, based on if they are in the BHCI second major and year in school e.g. seniors, juniors, etc This course is NOT open to students outside the HCI major. When registering for this course, undergraduate students are automatically placed the wait list. Students will be then moved into the class, based on if they are in the BHCI second major and year in school.


05633-B/05433-B: User Interface Lab (Section B - GUI)

Fall 2013

This course is a lab complement to 05-630 that focuses on practice in the skills needed for prototyping and development of simple graphical user interfaces. In this lab rapid development tools such as graphical user interface layout editors will be combined with simple code to create functioning interfaces for a range of practical applications. This course is for HCII Masters, BHCI dual majors, and others with basic programming skills, rather than necessarily a strong programming or Computer Science background.