Course Offerings
- Jump to:
- Winter 2024
- Fall 2023
- Spring 2023
Winter 2024▲
See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.
Fundamentals of Programming I
CSCI 111 - Sprenkle, Sara E.
A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.
Fundamentals of Programming I
CSCI 111 - Matthews, Elizabeth A. (Liz)
A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.
Fundamentals of Programming II
CSCI 112 - Tolley, William J.
A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.
Fundamentals of Programming II
CSCI 112 - Levy, Simon D.
A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.
Computer Organization
CSCI 210 - Watson, Cody A.
Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.
Computer Organization
CSCI 210 - Tolley, William J.
Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.
Algorithm Design and Analysis
CSCI 211 - Lu, Kefu
Methods for designing efficient algorithms, including divide-and-conquer, dynamic programming, and greedy algorithms. Analysis of algorithms for correctness and estimating running time and space requirements. Topics include advanced data structures, graph theory, network flow, and computational intractability.
Topics in Computer Science: Generative AI: Creating with Computation
CSCI 297D - Watson, Cody A.
This course delves into the transformative world of generative models, focusing on their principles, design, and applications. Students will engage with leading models like Generative Adversarial Networks (GANs), Variational Autoencoders (VAEs), diffusion models, and transformers and understand their architectures and the nuances of training. Through hands-on projects, students will explore the creative potentials of AI, spanning a variety of disciplines. Emphasizing ethical considerations, this course equips students with a holistic understanding of the generative AI landscape in today's tech ecosystem.
Programming Language Design
CSCI 312 - Levy, Simon D.
Introduction to the theory and design of modern programming languages. Using the programming language Haskell, students will explore core topics like grammar specification, parsing, data structuring and data typing, modularity, scoping, and expression semantics / evaluation. The insights and habits gained in this course will enable students to understand common problems they will encounter in everyday programming practice and to sharpen their programming skills for the challenges of real-world applications.
Video Game Design
CSCI 319 - Matthews, Elizabeth A. (Liz)
In this course, students learn to design and program video games using Python and the Pygame module. Concepts covered include video game code organization utilizing object-oriented programming, OOP design patterns, 2D animation, artificial intelligence, and responding to user feedback.
Parallel Computing
CSCI 320 - Lu, Kefu
This course introduces the principles of parallel computing. Students will explore the benefits and challenges of developing programs for the multi-core processors found on virtually all modern computers. Students will attain an understanding of the theory of parallel computing and gain hands on experience writing efficient programs in C using parallelization frameworks such as OpenMP. Topics include race conditions, parallel algorithms, dynamic multithreading, and scheduling.
Fall 2023▲
See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.
Fundamentals of Programming I
CSCI 111 - Watson, Cody A.
A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.
Fundamentals of Programming I
CSCI 111 - Lu, Kefu
A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.
Fundamentals of Programming I
CSCI 111 - Matthews, Elizabeth A. (Liz)
A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.
Fundamentals of Programming II
CSCI 112 - Sprenkle, Sara E. / Tolley, William J.
A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python.
Fundamentals of Programming II
CSCI 112 - Khan, Mohammad Taha (Taha)
A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python.
Software Development
CSCI 209 - Sprenkle, Sara E.
An examination of the theories and design techniques used in software development, with an emphasis on making software more maintainable. Hands-on implementation of those techniques. Topics include the software life cycle, design patterns, version control, unit testing, and program documentation.
Topics in Computer Science: Systems Programming
CSCI 297C - Khan, Mohammad Taha (Taha)
This course helps students gain a solid understanding of the operating system's abstractions that lie between software and hardware. Additionally, the course will teach fundamental problem-solving skills necessary for efficient program design. Students will gain proficiency with programming in C within the Linux environment and explore the various steps involved in running a program. The course will cover critical concepts such as symbol resolution, linking, memory management, process creation, scheduling, and communication. Furthermore, students will be introduced to the memory hierarchy and its benefits, the use of virtual memory, and dynamic memory allocation. Finally, the course will conclude with a basic introduction to computer networking, covering sockets and TCP/IP. By the end of this course, students will have a comprehensive understanding of modern and large-scale computing systems and the underlying concepts and mechanisms that drive them
Theory of Computation
CSCI 313 - Lu, Kefu
A study of the principles of computer science embodied in formal languages, automata, computability, and computational complexity. Topics include context-free grammars, Turing machines, and the halting problem.
Seminar: Reinforcement Learning
CSCI 397D - Watson, Cody A.
Reinforcement learning is a cutting-edge subfield of artificial intelligence and machine learning that enables intelligent agents to learn from experience and make decisions in complex environments. Students will have a deep understanding of the theory and practice of reinforcement learning and be able to apply the concepts and algorithms to a wide range of complex problems. They will also gain hands-on experience with deep learning frameworks and be familiar with the latest research in the field. This course will count towards the computer science major elective requirement of two courses in the CSCI-315 to CSCI-341 range.
Directed Individual Study: Social Media Algorithms
CSCI 401A - Sprenkle, Sara E.
Directed Individual Study: Cybersecurity and Privacy
CSCI 401C - Khan, Mohammad Taha (Taha)
Individual conferences.
Directed Individual Study: Interactive Machine Learning
CSCI 401D - Sprenkle, Sara E.
Individual conferences.
Spring 2023▲
See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.
Introduction to Robotics
CSCI 250 - Levy, Simon D.
This course combines readings from the contemporary robotics literature with hands-on lab experience building robots (equipment provided) and programming them to do various tasks. The lab experience culminates with a peer-judged competition of robot projects proposed and built during the second half of the term.
Topics in Computer Science: Scientific Visualization
CSCI 297B - Matthews, Geoffrey
This course presents principles and methods for visualizing data resulting from measurements andcalculations in both the physical sciences and the life sciences. In this course, you will be introduced totechniques and tools to effectively visualize, investigate, and understand scientific data. In addition togaining a working knowledge of important visualization tools, you will come to understand the principles of meaningful and effective visualization, and the pitfalls of poor or misleading visualizations.
Directed Individual Study: Software Engineering through Web Applications
CSCI 403A - Sprenkle, Sara E.
Individual conferences.