Fall 2025 Courses Fall 2025 registration week is April 7-11 2025. See the HUB steps to register for guidance.You can toggle for Graduate or Undergraduate or search by course number. Courses & Curriculum Related ResourcesCurrent Semester Courses |Summer 2025 Courses | Fall 2025 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 -*- 15619 Cloud Computing 15 This course gives students an overview of Cloud Computing, which is the delivery of computing as a service over a network, whereby distributed resources are rented, rather than owned, by an end user as a utility. Students will study its enabling technologies, building blocks, and gain hands-on experience through projects utilizing public cloud infrastructures. Cloud computing services are widely adopted by many organizations across domains. The course will introduce the cloud and cover the topics of data centers, software stack, virtualization, software defined networks and storage, cloud storage, and programming models. We will start by discussing the cloud¿s motivating factors, benefits, challenges, service models, SLAs and security. We will describe several concepts behind data center design and management, which enable the economic and technological benefits of the cloud paradigm. Next, we will study how CPU, memory and I/O resources, network (SDN) and storage (SDS) are virtualized, and the key role of virtualization to enable the cloud. Subsequently, students will study cloud storage concepts like data distribution, durability, consistency and redundancy. We will discuss distributed file systems, NoSQL databases and object storage using HDFS, CephFS, HBASE, MongoDB, Cassandra, DynamoDB, S3, and Swift as case studies. Finally, students will study the MapReduce, Spark and GraphLab programming models. Students will work with Amazon Web Services and Microsoft Azure, to rent and provision compute resources and then program and deploy applications using these resources. Students will develop and evaluate scaling and load balancing solutions, work with cloud storage systems, and develop applications in several programming paradigms. 15619 students must complete an extra team project which entails designing and implementing a cost- and performance-sensitive web-service for querying big data. Instructor(s) Seth GoldsteinMajd Sakr Click to read more... 15622 Introduction to Computer Music 12 Computers are used to synthesize sound, process signals, and compose music. Personal computers have replaced studios full of sound recording and processing equipment, completing a revolution that began with recording and electronics. In this course, students will learn the fundamentals of digital audio, basic sound synthesis algorithms, and techniques for digital audio effects and processing. Students will apply their knowledge in programming assignments using a very high-level programming language for sound synthesis and composition. In a final project, students will demonstrate their mastery of tools and techniques through music composition or by the implementation of a significant sound-processing technique. Click to read more... 15635 Foundations of Blockchains 12 In this course, students will learn the mathematical foundations of blockchains, including how to construct distributed consensus protocols and prove them secure, cryptography for blockchains, and mechanism design for blockchains. This course will take a mathematically rigorous approach. Students are expected to have mathematical maturity and be able to write formal mathematical proofs. Students may also be expected to implement some consensus or cryptographic algorithms. This course is crosslisted with 15-435. Graduate students should take 15-635. Undergraduates should take 15-435. Instructor(s) Elaine Shi 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) Dave EckhardtRuben Martins Click to read more... 15640 Distributed Systems 12 The goals of this course are twofold: First, for students to gain an understanding of the principles and techniques behind the design of distributed systems, such as locking, concurrency, scheduling, and communication across the network. Second, for students to gain practical experience designing, implementing, and debugging real distributed systems. The major themes this course will teach include scarcity, scheduling, concurrency and concurrent programming, naming, abstraction and modularity, imperfect communication and other types of failure, protection from accidental and malicious harm, optimism, and the use of instrumentation and monitoring and debugging tools in problem solving. As the creation and management of software systems is a fundamental goal of any undergraduate systems course, students will design, implement, and debug large programming projects. As a consequence, competency in both the C and Java programming languages is required. Instructor(s) Heather MillerPeter SteenkisteWenting Zheng Click to read more... 15641 Networking and the Internet 12 The emphasis in this course will be on the basic performance and engineering trade-offs in the design and implementation of computer networks. To make the issues more concrete, the class includes several multi-week projects requiring significant design and implementation. Instructor(s) Peter SteenkisteJustine Sherry Click to read more... 15645 Database Systems 12 This course is on the design and implementation of database management systems. Topics include data models (relational, document, key/value), storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). Case studies on open-source and commercial database systems will be used to illustrate these techniques and trade-offs. The course is appropriate for students with strong systems programming skills. Instructor(s) Andrew Pavlo Click to read more... 15650 Algorithms & Advanced Data Structures 12 The objective of this course is to study general computational problems, with a focus on the principles used to design those algorithms. Efficient data structures will be discussed to support these algorithmic concepts. Topics include: Run time analysis, divide-and-conquer algorithms, dynamic programming algorithms, network flow algorithms, linear and integer programming, large-scale search algorithms and heuristics, efficient data storage and query, and NP-completeness. Although this course will have several programming assignments, it is primarily not a programming course. Instead, it will focus on the design and analysis of algorithms for general classes of problems. This course is not open to CS graduate students who should consider taking 15-651 instead. Instructor(s) Dan DeBlasio Click to read more... 15651 Algorithm Design and Analysis 12 This course is intended for SCS graduate students. All other graduate students should register for 15-650. This course is about the design and analysis of algorithms. We study specific algorithms for a variety of problems, as well as general design and analysis techniques. Specific topics include searching, sorting, algorithms for graph problems, efficient data structures, lower bounds and NP-completeness. A variety of other topics may be covered at the discretion of the instructor. These include parallel algorithms, randomized algorithms, geometric algorithms, low level techniques for efficient programming, cryptography, and cryptographic protocols. Instructor(s) Danny SleatorDaniel Anderson Click to read more... 15652 Foundations of Programming Languages 12 This course discusses in depth many of the concepts underlying the design, definition, implementation, and use of modern programming languages. Formal approaches to defining the syntax and semantics are used to describe the fundamental concepts underlying programming languages. A variety of programming paradigms are covered such as imperative, functional, logic, and concurrent programming. In addition to the formal studies, experience with programming in the languages is used to illustrate how different design goals can lead to radically different languages and models of computation. Instructor(s) Robert Harper Click to read more... 15657 Constructive Logic 9 This multidisciplinary junior-level course is designed to provide a thorough introduction to modern constructive logic, its roots in philosophy, its numerous applications in computer science, and its mathematical properties. Some of the topics to be covered are intuitionistic logic, inductive definitions, functional programming, type theory, realizability, connections between classical and constructive logic, decidable classes. This course counts as a Fundamentals course in the Computer Science major. Instructor(s) Karl Crary Click to read more... 15659 Probability & Computing: Randomized Algs and Markov Chains 12 Probability theory has become indispensable in computer science. In areas such as artificial intelligence and computer science theory, probabilistic methods and ideas based on randomization are central. In other areas such as networks and systems, probability is becoming an increasingly useful framework for handling uncertainty and modeling the patterns of data that occur in complex systems. This course is a follow-up course to 15-259, Probability and Computing. It will cover Chapters 18-27 of the same textbook, "Introduction to Probability for Computing", by Prof. Harchol-Balter. Topics include concentration inequalities, various randomized algorithms including number theoretic routines, Markov chains and their many applications, and queueing theory. The course will assume familiarity with multivariate calculus and linear algebra. Click to read more... 15661 Interaction and Expression using the Pausch Bridge Lighting 4 Working in cross-disciplinary teams, students will explore light as art, interactive design and programming using a Pharos lighting control system. Students will explore the use of light and interaction using the actual controls within the Randy Pausch Memorial Bridge. Student teams will develop final projects that will be exhibited on the actual Randy Pausch Memorial Bridge. Instructor(s) Garth ZeglinMary Ellen Stebbins Click to read more... 15662 Computer Graphics 12 This course provides a comprehensive introduction to computer graphics modeling, animation, and rendering. Topics covered include basic image processing, geometric transformations, geometric modeling of curves and surfaces, animation, 3-D viewing, visibility algorithms, shading, and ray tracing. Instructor(s) Minchen LiOscar Dadfar Click to read more... 15663 Computational Photography 12 Computational photography is the convergence of computer graphics, computer vision and imaging. Its role is to overcome the limitations of the traditional camera, by combining imaging and computation to enable new and enhanced ways of capturing, representing, and interacting with the physical world. This advanced undergraduate course provides a comprehensive overview of the state of the art in computational photography. At the start of the course, we will study modern image processing pipelines, including those encountered on mobile phone and DSLR cameras, and advanced image and video editing algorithms. Then we will proceed to learn about the physical and computational aspects of tasks such as 3D scanning, coded photography, lightfield imaging, time-of-flight imaging, VR/AR displays, and computational light transport. Near the end of the course, we will discuss active research topics, such as creating cameras that capture video at the speed of light, cameras that look around walls, or cameras that can see through tissue. The course has a strong hands-on component, in the form of seven homework assignments and a final project. In the homework assignments, students will have the opportunity to implement many of the techniques covered in the class, by both acquiring their own images of indoor and outdoor scenes and developing the computational tools needed to extract information from them. For their final projects, students will have the choice to use modern sensors provided by the instructors (lightfield cameras, time-of-flight cameras, depth sensors, structured light systems, etc.). Instructor(s) Ioannis Gkioulekas Click to read more... 15666 Computer Game Programming 12 The goal of this course is to acquaint students with the code required to turn ideas into games. This includes both runtime systems -- e.g., AI, sound, physics, rendering, and networking -- and the asset pipelines and creative tools that make it possible to author content that uses these systems. In the first part of the course, students will implement small games that focus on specific runtime systems, along with appropriate asset editors or exporters. In the second part, students will work in groups to build a larger, polished, open-ended game project. Students who have completed the course will have the skills required to extend -- or build from scratch -- a modern computer game. Students wishing to take this class should be familiar with the C++ language and have a basic understanding of the OpenGL API. If you meet these requirements but have not taken Computer Graphics (the formal prerequisite), please contact the instructor. Instructor(s) James McCann Click to read more... 15669 Special Topics: Numerical Computing 12 Many problems in science, engineering, and computer graphics cannot be solved exactly. Numerical computing provides methods to approximate these solutions using computational techniques. It combines mathematics and programming to solve real-world problems such as simulations, optimization, and data analysis. The course begins with a review of key mathematical concepts like vector spaces, matrices, and calculus. We then explore how numbers are represented on computers, the types of errors that can occur, and strategies to handle them. Core topics include solving linear and nonlinear systems, eigenvalue problems, optimization, and techniques such as LU decomposition, QR factorization, and singular value decomposition (SVD). We will also cover iterative methods for large systems, interpolation, numerical differentiation, integration, and both ordinary and partial differential equations. Students will gain hands-on experience implementing algorithms and learn to balance accuracy, stability, and efficiency in computational solutions. Instructor(s) Minchen Li Click to read more... 15673 Visual Computing Systems 12 Visual computing tasks such as computational imaging, image/video understanding, and real-time graphics are key responsibilities of modern computer systems ranging from sensor-rich smart phones to large datacenters. These workloads demand exceptional system efficiency and this course examines the key ideas, techniques, and challenges associated with the design of parallel, heterogeneous systems that accelerate visual computing applications. This course is intended for graduate and advanced undergraduate-level students interested in architecting efficient graphics, image processing, and computer vision platforms. Instructor(s) Oscar Dadfar 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) Ruben MartinsDave Eckhardt Click to read more... 15697 Graduate Reading and Research varies Research course for students pursuing a thesis in the 5th Year Master of Science Program. Working 1 on 1 with faculty and their graduate students. Instructor(s) Ruben MartinsDave EckhardtTracy Farbacher 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) Ruben MartinsDave Eckhardt Click to read more... 15712 Advanced Operating Systems and Distributed Systems 12 This is a graduate course in operating systems. The course will consist of a reading/lecture/discussion component and a project component. The class will cover approximately 40 research papers. Some of these papers will introduce students to the basic principles on which modern operating systems and distributed systems are based. Others will cover more recent work to explore the state of the art and observe the evolution of these systems over time. Instructor(s) David Andersen Click to read more... Doctoral Breadth: Software Systems - (*) 15714 Resource Aware Programming Languages 12 Resource use—the amount of time, memory, and energy a program requires for its execution—is one of the central subjects of computer science. Nevertheless, resource use traditionally does not play a central role in programming-language concepts, such as operational semantics, type systems, and program logics. This course revisits these concepts to model and analyze resource use of programs in a compositional and mathematically-precise way. The emphasis is on practical, type-based techniques that automatically inform programmers about the resource use of their code. We first study such techniques for functional programs and then develop generalizations to imperative, probabilistic, and concurrent programs. Instructor(s) Jan Hoffmann Click to read more... 15721 Advanced Database Systems 12 This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas. Instructor(s) Jignesh Patel Click to read more... 15735 Foundations of Blockchains 12 In this course, students will learn the mathematical foundations of blockchains, including how to construct distributed consensus protocols and prove them secure, cryptography for blockchains, and mechanism design for blockchains. Students may also be expected to implement some consensus or cryptographic algorithms. Instructor(s) Elaine Shi Click to read more... 15745 Optimizing Compilers for Modern Architectures 12 Theoretical and practical aspects of building optimizing compilers that e¿ectively exploit modern architectures. The course will begin with the fundamentals of compiler optimization, and will build upon these fundamentals to address issues in state-of-the-art commercial and research machines. Instructor(s) Todd Mowry Click to read more... Doctoral Breadth: Computer Systems - (*) 15746 Storage Systems 12 Storage systems are among the most fascinating and the most important parts of computer systems. They often dominate the performance of a system, and failures of other components are frequently addressed by restarting from the data stored on them. Indeed, storage systems hold the crown jewels of most organizations: their information (from source code to Microsoft's software to the sales databases of every e-commerce site to the logs and indices driving the Big Data and ML revolution). There continues to be great demand for bright people and better solutions in this critical field of computer systems. Instructor(s) George AmvrosiadisGregory Ganger Click to read more... 15750 Algorithms in the Real World 12 The course covers a broad set of topics in algorithms design and analysis. The goal is to cover tools and algorithms that give students the ability to (a) recognize which tool or method to apply to problems, (b) to become reasonably proficient at using these tools, and (c) to be able to reason about the correctness and performance of the resulting algorithms. The course webpage for this semester will list the tentative list of topics to be covered; these will include basic graph algorithms, randomized algorithms, hashing and streaming, flows and linear programming, convex optimization, and linear algebraic algorithms. Please refer to https://www.cs.cmu.edu/~csd-grad/courseschedules22.html for the most recent schedule updates. Instructor(s) Jason Li Click to read more... Doctoral Breadth: Algorithms and Complexity - (*) 15783 Trustworthy AI: Theory and Practice 12 As AI systems become more capable and widely deployed, ensuring their reliability, robustness, and alignment with human intent is critical. This advanced seminar explores the principles behind building trustworthy AI, with a focus on both theoretical foundations and empirical guarantees. We will examine key challenges such as robustness to distribution shifts, adversarial attacks, data poisoning, privacy risks, and jailbreaks, as well as broader concerns in AI alignment and governance. Through a mix of foundational papers and recent advances, the class will investigate recurring themes across security, robustness, and alignment, drawing connections to classical machine learning principles and modern scaling trends. Discussions will emphasize not only what works but also why it works (or fails)—aiming to equip students with the conceptual tools to critically assess current methods and develop principled approaches for trustworthy AI. This course is designed for students interested in both theoretical insights and practical implications, bridging research in machine learning, security, and AI alignment to address some of the most pressing challenges in modern AI development. " Through a mix of foundational papers and recent advances, the class will investigate recurring themes across security, robustness, and alignment, drawing connections to classical machine learning principles and modern scaling trends. Discussions will emphasize not only what works but also why it works (or fails)—aiming to equip students with the conceptual tools to critically assess current methods and develop principled approaches for trustworthy AI. This course is designed for students interested in both theoretical insights and practical implications, bridging research in machine learning, security, and AI alignment to address some of the most pressing challenges in modern AI development. Instructor(s) Aditi Raghunathan Click to read more... 15795 Algebraic and Numerical Algorithms 12 This course aims to give implementation motivated perspectives on some algorithmic ideas that fall outside of the scopes of typical algorithms courses. It is intended for graduate students, as well as undergraduate students who have high grades in 15-451, and 15-259 or 21-325. The first half of the course will discuss floating point precision, numerical approximation schemes, heuristic search, usage of optimization packages, and vectorization. The second half will provide high-level surveys of 2-D range update & query data structures, proactive propagation, and iterative methods. Evaluations will consist of about 30 auto-graded coding tasks, plus either participation in the ICPC NAEast Programming Contest, or presentations of problem-solving reports from various OI team selections. Instructor(s) Richard Peng Click to read more... 15798 Special Topic: Generative AI for Music and Audio 12 In this seminar class, we will discuss state-of-the-art methods in generative AI for music and general audio (everyday sounds, speech, bioacoustics, etc.), with applications to both generation and understanding. We will examine and compare the two primary families of methods that are used in modern audio generation research: large language models applied to discrete audio tokens, and diffusion models applied to continuous audio representations. With an eye towards offering intuitive controls for music generation, we will also examine classic methods and tasks in music information retrieval such as spectral analysis, synchronization, beat detection, and transcription. Moreover, we will explore emerging topics in generative AI for music and audio such as new architectures, training data attribution, interaction, compression, multimodality, and evaluation. Finally, we will discuss the ethical and societal implications of music generation specifically, and its potential effects on music both economically and culturally. Much of the course activity will center around (1) in-class lectures and demonstrations on small scale datasets, (2) student-led discussions of research papers, and (3) an open-ended research project. Instructor(s) Chris Donahue Click to read more... 15801 CS PhD Alternative Elective varies This number is used internally by the department to transfer approved courses for elective credit. Instructor(s) Karl Crary Click to read more... 15802 CSD PhD Elective varies This course number is used for internal course transfer for approved electives outside CSD Instructor(s) Karl Crary Click to read more... 15814 Types and Programming Languages 12 The course studies the theory of type systems, with a focus on applications of type systems to practical programming languages. The emphasis is on the mathematical foundations underlying type systems and operational semantics. The course includes a broad survey of the components that make up existing type systems, and also teaches the methodology behind the design of new type systems. Instructor(s) Frank Pfenning Click to read more... Doctoral Breadth: Programming Languages - (*) 15816 Advanced Topics in Logic: Automated Reasoning and Satisfiability 12 Automated reasoning has become a powerful technology with applications ranging from verification of hardware and software to solving long-standing open problems in mathematics. This course covers several state-of-the-art automated reasoning techniques and provides hands-on experience with research questions in this area. Instructor(s) Ruben Martins Click to read more... Doctoral Breadth: Programming Languages - (*) 15821 Mobile and Pervasive Computing 12 This is a course exploring research issues in mobile computing and its close relative, pervasive computing (aka "Internet of Things (IoT)"). Many traditional areas of computer science and computer engineering are impacted by the constraints and demands of mobile and pervasive computing. The course will offer significant hands-on experience: students will work in small groups under the guidance of a mentor on a project. Each student will present a research paper from the literature in a conference-style 30-minute talk. In teams of two, students will present a short (30 minutes) overview of the commercial landscape for one of the topics covered in class. There will a brief quiz at the start of each class, based on the readings for that class. Prerequisites Knowledge of operating systems, distributed systems, and computer architecture. If in doubt, check with one of the instructors before registering. Instructor(s) Asim SmailagicMahadev SatyanarayananBabu Pillai Click to read more... Doctoral Breadth: Software Systems - (-) 15826 Multimedia and Data Mining 12 The course covers advanced algorithms for learning, analysis, data management and visualization of large datasets. Topics include indexing for text and DNA databases, searching medical and multimedia databases by content, fundamental signal processing methods, compression, fractals in databases, data mining, privacy and security issues, rule discovery, data visualization, graph mining, stream mining. Instructor(s) Christos Faloutsos Click to read more... Doctoral Breadth: Software Systems - (-) 15853 Theory of Markov Processes: Selected Topics with Applications in ML and GenAI 12 Markov processes are a fundamental mathematical concept with broad applications, including emerging fields such as reinforcement learning and diffusion models. This course is structured into two parts. Part I covers the core theory of Markov processes, including discrete-time and continuous-time Markov chains, as well as Markov processes with continuous state space such as diffusion processes. Part II builds on the core theory and covers selected topics in the theoretical foundation of reinforcement learning and diffusion models in generative AI. Instructor(s) Weina Wang Click to read more... 15856 Introduction to Cryptography 12 This course is aimed as an introduction to modern cryptography. This course will be a mix of applied and theoretical cryptography. Instructor(s) Aayush Jain Click to read more... Doctoral Breadth: Algorithms and Complexity - (*) 15857 Analytical Performance Modeling & Design of Computer Systems 12 In designing computer systems one is usually constrained by certain performance requirements and limitations. For example, one might need to guarantee a response time SLA or certain throughput requirement, while at the same time staying within a power budget or cost budget. On the other hand, one often has many choices: One fast disk, or two slow ones? More memory, or a faster processor? A fair scheduler or one that minimizes mean response time? For multi-server systems, one can choose from a wide array of load balancing policies, a wide array of migration policies, capacity provisioning schemes, power management policies ... The possibilities are endless. The best choices are often counter-intuitive. Ideally, one would like to have answers to these questions before investing the time and money to build a system. This class will introduce students to analytic stochastic modeling with the aim of answering the above questions. Instructor(s) Mor Harchol-Balter Click to read more... Doctoral Breadth: Algorithms and Complexity - (*) 15862 Computational Photography 12 Computational photography is the convergence of computer graphics, computer vision and imaging. Its role is to overcome the limitations of the traditional camera, by combining imaging and computation to enable new and enhanced ways of capturing, representing, and interacting with the physical world. This advanced undergraduate course provides a comprehensive overview of the state of the art in computational photography. At the start of the course, we will study modern image processing pipelines, including those encountered on mobile phone and DSLR cameras, and advanced image and video editing algorithms. Then we will proceed to learn about the physical and computational aspects of tasks such as 3D scanning, coded photography, lightfield imaging, time-of-flight imaging, VR/AR displays, and computational light transport. Near the end of the course, we will discuss active research topics, such as creating cameras that capture video at the speed of light, cameras that look around walls, or cameras that can see through tissue. The course has a strong hands-on component, in the form of seven homework assignments and a final project. In the homework assignments, students will have the opportunity to implement many of the techniques covered in the class, by both acquiring their own images of indoor and outdoor scenes and developing the computational tools needed to extract information from them. For their final projects, students will have the choice to use modern sensors provided by the instructors (lightfield cameras, time-of-flight cameras, depth sensors, structured light systems, etc.). Instructor(s) Ioannis Gkioulekas Click to read more... 15883 Computational Models of Neural Systems 12 This course is an in-depth study of information processing in real neural systems from a computer science perspective. We will examine several brain areas, such as the hippocampus and cerebellum, where processing is sufficiently well understood that it can be discussed in terms of specific representations and algorithms. We will focus primarily on computer models of these systems, after establishing the necessary anatomical, physiological, and psychophysical context. There will be some neuroscience tutorial lectures for those with no prior background in this area. Instructor(s) David Touretzky Click to read more... 15888 Computational Game Solving 12 The course will focus on multi-step imperfect-information games because most real-world strategic settings are such games. Such games beget additional issues beyond perfect-information games like chess and Go, such as signaling, deception, and understanding deception by others. There has been tremendous progress in the AI community on solving such games since around 2003. This course covers the fundamentals and the state of the art of solving such games. Instructor(s) Tuomas Sandholm Click to read more... 15890 Computer Science Pedagogy 12 A broad introduction to Computer Science Pedagogy. Although the course focus is on CS pedagogy and developing curricular content, students will learn some fundamentals of modern mobile application programming. Instructor(s) Franceska XhakajMichael Hilton Click to read more... 15921 Reading on Research 3 This is a weird seminar. It's not about doing research. Instead, it's about the (often, undiscussed) psychological, emotional, and philosophical themes that you will face as you come to identify as a researcher. Instructor(s) Justine Sherry Click to read more... 15990 Computer Science Colloquium No course description provided. Click to read more... 15996 Introductory Course for CS Doctoral Students (IC) 6 This orientation course is required for incoming Computer Science Department doctoral students. Instructor(s) Karl Crary Click to read more... 15997 Graduate Reading and Research varies This course number is used for doctoral students to register the appropriate units for research associated with work toward on or on their dissertation. Instructor(s) Karl Crary Click to read more... 15998 Practicum in Computer Science varies Individualized Experience - Internships Instructor(s) Karl Crary Click to read more... Pagination First page « First Previous page ‹ Previous Page 1 Current page 2