Upcoming Courses Summer 2025 Summer courses and registration week will be posted after the Schedule of Classes is updated by the Registrar. See the HUB steps to register for guidance.Current Semester will remain posted until the next semester information is available.You can toggle for Graduate or Undergraduate or search by course number. Courses & Curriculum Related ResourcesCurrent Semester Courses |Upcoming Semester Courses | Doctoral Breadth CoursesSchedule of Classes | Undergraduate Curriculum Requirements | Undergraduate CatalogMSCS Handbook | Fifth Year Master's Handbook | Ph.D. Handbook | Student Resources Course Level - Any -UndergradMastersDoctoral Search Breadth - Any -*- 15051 Discrete Math Primer 1 DMP is an online course that introduces students to three foundational topics in mathematics: logic, sets and functions. The course differs from traditional counterparts in its strong and consistent emphasis on computational aspects. This approach is particularly suitable for students who are interested in the computational universe, and not just in classical mathematics. Each of the three modules in DMP ends in a checkpoint, an assessment that helps students evaluate their understanding of the material. Incoming undergraduate computer science majors are encouraged to take this online course prior to arrival on campus. Additionally, high school students contemplating a computer science or mathematics major may find this course useful. The course uses Carnegie Mellon's OLI system as a delivery platform. Instructor(s) Klaus SutnerVeronica Peet Click to read more... 15090 Computer Science Practicum 3 This course is for Computer Science students who wish to have an internship experience as part of their curriculum. Students are required to write a one-page summary statement prior to registration that explains how their internship connects with their CS curriculum, specifically on how it uses material they have learned as well as prepares them for future courses. Near the end of the internship, students will be required to submit a reflection paper that describes the work they did in more detail, including lessons learned about the work experience and how they utilized their CS education to work effectively. International students should consult with the Office of International Education for appropriate paperwork and additional requirements before registration. Units earned count toward the total required units necessary for degree completion; students should speak with an academic advisor for details. This course may be taken at most 3 times for a total of 9 units maximum. Students normally register for this course for use during the summer semester. Instructor(s) Mark Stehlik Click to read more... 15150 Principles of Functional Programming 12 An introduction to programming based on a "functional" model of computation. The functional model is a natural generalization of algebra in which programs are formulas that describe the output of a computation in terms of its inputs---that is, as a function. But instead of being confined to real- or complex-valued functions, the functional model extends the algebraic view to a very rich class of data types, including not only aggregates built up from other types, but also functions themselves as values. This course is an introduction to programming that is focused on the central concepts of function and type. One major theme is the interplay between inductive types, which are built up incrementally; recursive functions, which compute over inductive types by decomposition; and proof by structural induction, which is used to prove the correctness and time complexity of a recursive function. Another major theme is the role of types in structuring large programs into separate modules, and the integration of imperative programming through the introduction of data types whose values may be altered during computation. 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. David Khan will be teaching this course, Summer 22. Please direct any questions about this waitlist to Amy Weis at alweis@andrew.cmu.edu. Click to read more... 15213 Introduction to Computer Systems 12 This course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. NOTE FOR GRADUATE STUDENTS: This course is not open to graduate students beginning Spring 2015. Graduate students must register for 15-513 instead. Instructor(s) Brian Railing Click to read more... 15503 Introduction to Computer Systems 6 This course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. **This online course is only available to incoming master's students who need a refresher course on computer systems. Not open to undergraduates.** Instructor(s) Brian Railing Click to read more... 15513 Introduction to Computer Systems varies This course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. **This course is not available to undergraduates.** Click to read more... 15591 Independent Study in Computer Science varies The School of Computer Science offers Independent Study courses, which allow motivated students to work on projects under the supervision of a faculty advisor while receiving academic credit. Independent studies are usually one semester in duration and require prior approval from the faculty member and the School of Computer Science. Instructor(s) Mark Stehlik Click to read more... 15639 Independent Study in Computer Science Pedagogy varies This class is for master's students contributing to the development and delivery of a class, e.g., in a co-instructor role or as a preparation for teaching professionally. Students will be supervised by a faculty member and will participate in graduate teaching support activities sponsored by the Eberly Center for Teaching Excellence and Educational Innovation. You must contact your academic advisor to be enrolled in the class. Instructor(s) Ruben MartinsDave EckhardtDavid O'Hallaron Click to read more... 15689 Independent Study in the Computer Sciences varies This course is for Computer Science master's students carrying out research supervised by a faculty member. Students will be automatically wait-listed pending program approval of an independent-study prospectus (contact your academic advisor for details). Instructor(s) Dave EckhardtRuben MartinsDavid O'Hallaron Click to read more... 15691 Practicum varies To be determined Instructor(s) Dave EckhardtRuben Martins Click to read more... 15697 Graduate Reading and Research varies No course description provided. Instructor(s) Dave EckhardtTracy FarbacherRuben MartinsDavid O'Hallaron Click to read more... 15698 MSCS Research Thesis varies This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details). Instructor(s) Dave EckhardtRuben Martins Click to read more... 15997 Graduate Reading and Research varies Currently, there is no description information available. Instructor(s) Karl Crary 15998 Practicum in Computer Science varies Doctoral Student Internships Instructor(s) Karl Crary Click to read more...