Global Arc

1
Search International Offerings

You can now simultaneously browse international opportunities and on-campus courses; the goal is to plan coursework — before and/or after your trip — that will deepen your experiences abroad.

2
Add Your Favorites

Log in and add international activities and relevant courses to your Global Arc.

3
Get Advice

Download your Arc and share with your academic adviser, who can help you refine your choices.

4
Enroll, Apply and Commit

Register for on-campus classes through TigerHub, and apply for international experiences using Princeton’s Global Programs System.

5
Revisit and Continue Building

Return to the Global Arc throughout your Princeton career as you delve deeper into your interests. 

Refine search results

Subject

Displaying 3351 - 3360 of 3784
Close icon
Computer Science
Introduction to Programming Systems
An introduction to computer organization and system software. Developing skills for composing large programs, including modularity, abstraction, programming style, and best practices for code development, testing, debugging, and performance tuning. Additionally, an overview of computing environments and architectures, through the C programming language, assembly language, and machine language. Prerequisites: COS 126 or ECE 115.
Close icon
Computer Science
Algorithms and Data Structures
This course surveys the most important algorithms and data structures in use on computers today. It emphasizes algorithms and data structures for sorting, searching, and graphs. The course concentrates on developing implementations, understanding their performance characteristics, and estimating their effectiveness in applications. Prerequisites: COS 126 or approval by the COS placement officer.
Close icon
Computer Science
Reasoning About Computation
An introduction to mathematical topics relevant to computer science. Combinatorics, probability and graph theory will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling. Students will be introduced to fundamental concepts in theoretical computer science, such as NP-completeness and cryptography that arise from the world view of efficient computation. Prerequisites: COS 126 and MAT 175 or MAT 202 or MAT 204.
Close icon
Computer Science
Mathematics for Numerical Computing and Machine Learning
This course provides a comprehensive and practical background for students interested in continuous mathematics for computer science. The goal is to prepare students for higher-level subjects in artificial intelligence, machine learning, computer vision, natural language processing, graphics, and other topics that require numerical computation. This course is intended students who wish to pursue these more advanced topics, but who have not taken (or do not feel comfortable) with university-level multivariable calculus (e.g., MAT 201/203) and probability (e.g., ORF 245 or ORF 309). Prerequisites: COS 126 and MAT 202.
Close icon
Computer Science
Principles of Computer System Design
This course teaches students the design, implementation, and evaluation of computer systems, including operating systems, networking, and distributed systems. The course will teach students to evaluate the performance and study the design choices of existing systems. Students will also learn general systems concepts that support design goals of modularity, performance, and security. Students will apply materials learned in lectures and readings to design and build new systems components. Prerequisites: Students must have completed COS 217 and COS 226 prior to enrolling in this course.
Close icon
Computer Science
Operating Systems
An introduction to operating systems. The emphasis is on the fundamentals of designing and implementing an operating system. Topics include operating system structure, processes, threads, synchronizations, concurrent programming, interprocess communications, virtual memory, and file systems. COS 217 required. COS 316, COS 333, COS 318, 375, and/or programming maturity recommended.
Close icon
Computer Science
Compiling Techniques
Understand the design and construction of compilers. Concepts include syntax analysis, semantics, code generation, and optimization. Translation of imperative languages (such as C), functional languages (such as ML), and object-oriented languages (such as Java) will be studied. Students will implement a complete compiler for a small language. Prerequisites: COS 217, COS 226 and COS 326
Close icon
Computer Science
Introduction to Machine Learning
This course is an introduction to various machine learning paradigms and algorithms, providing a foundation for further study or independent work in machine learning and data science. Topics include linear models for classification and regression, support vector machines, clustering, dimensionality reduction, deep neural networks, Markov decision processes, planning, and reinforcement learning. The course goals are threefold: to understand the landscape of machine learning, to compute the math behind techniques, and to use Python and relevant libraries to implement and apply various methods. Prerequisite: MAT 103, MAT 202, and COS 226.
Close icon
Computer Science
Functional Programming and Formal Methods
In the world of large language models and AI coding agents, it is easier than ever to generate code, but a key question remains: How do we know the code we have generated does what we want it to? This class will introduce students to functional programming and techniques for specifying, generating, testing, and reasoning about programs. Topics include an introduction to the principles and practice of functional programming; type systems; specification of program properties; property-based testing; logic, theorem provers, and reasoning about program correctness. Prerequisite COS 226.
Close icon
Computer Science
Advanced Programming Techniques
This is a course about the practice of programming. Programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves & others. At the same time, they must be concerned with compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop these skills by working on their own code and in group projects. Prerequisites - Successful completion of COS 217 and 226.