Course Offerings

Spring 2022

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.

A Walk Through the Ages: Using Artificial Intelligence to Understand the Evolution of Exercise

CSCI 257 - Watson, Cody A. / Toporikova, Natalia

Exercise leaves us healthier and happier, yet many of us struggle to get enough physical activity. Why it is so hard to hit the gym? Our biology and evolutionary past might play a role in our reluctance to undertake physical activity. In this course, students will learn how to quantify the amount of physical activity using wearable exercise trackers. We will collect data on different types of activities in different environments and physiological conditions. Using machine learning tools, we will develop a unique classifier that will predict the environmental/physiological setting based on the data. We will go through the processes of experimental design, data extraction, data preprocessing, data modeling and finally, data interpretation. These aspects of the course will culminate in a course project which will require students to build a model that represents the exercise data gathered.

Advanced Topics in Robotics

CSCI 316 - Levy, Simon D.

A review of advanced topics in robotics, including well-established topics like Bayesian filtering and control theory and current trends like intelligent robots and neuromorphic control. Readings in these areas are reinforced by hands-on projects with robot hardware and simulators. Students present their final projects at the culminating annual Spring Term Festival. Each class meeting includes lecture, discussion, and project work done in teams of one to four students, with weekly quizzes on the readings.

Cloud Computing

CSCI 326 - Lu, Kefu

In this course, students are introduced to Cloud Computing. Clouding Computing focuses on implementing programs on distributed computers and delivering them as a service. Students will explore diverse aspects of this broad area, ranging from the design of cloud systems to creating applications on cloud systems. Selected topics include the theory of distributed systems, the benefits and challenges of the cloud, MapReduce and Spark, algorithm design on distributed systems, Amazon Web Services, and data analysis.

Winter 2022

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 - Watson, Cody A.

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 - Khan, Mohammad T. (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. Laboratory course.

Computer Organization

CSCI 210 - Khan, Mohammad T. (Taha)

Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.

Computer Organization

CSCI 210 - Levy, Simon D.

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.

Programming Language Design

CSCI 312 - Levy, Simon D.

Formal language description tools, semantic concepts and syntactic constructs appropriate to diverse applications. The Haskell programming language is used as the basis for understanding these concepts and for designing and implementing a simple programming language based on them.

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.

Seminar

CSCI 397A - Sprenkle, Sara E.

Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit if the topics are different. A maximum of six credits may be used toward the major requirements.

Winter 2022, CSCI 397A-01: Seminar: Software Tools (3).
This course is the study of software tools and environments commonly used throughout the software life cycle and beyond. The course will focus on the tools used in the software life cycle, the goals of each tool, how the tools are used in practice, and the technology behind the tools. Students will learn how to choose from among a variety of different tools for a given software engineering task. Tools include integrated development environments, software testing and debugging, build tools, static analysis, performance profiling, and containers. In addition, we'll also learn Unix commands and bash scripting.  Although the course's number is 397, this course will count towards the CSCI-315 - CSCI-341 range of elective courses for the major. Sprenkle.

Directed Individual Study

CSCI 401 - Levy, Simon D.

Individual conferences. May be repeated for degree credit if the topics are different.

Fall 2021

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.

Survey of Computer Science

CSCI 101 - Lambert, Kenneth A. (Ken)

Not open to students with previous credit in computer science.  An overview of the discipline of computer science achieved through an introductory-level survey of a number of major areas of computer science. Topics include algorithms used for computer solutions of important practical problems, computer programming, digital logic applied to computer circuitry, computer architecture, data representation and organization, Web page basics, computer networks, and theoretical limits of computation. Lectures and formal laboratories.

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 - Khan, Mohammad T. (Taha)

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 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.

Software Development

CSCI 209 - Sprenkle, Sara E.

An examination of the theories and design techniques used in software development. Topics include the software life cycle, design patterns, the Unified Modeling Language, unit testing, refactoring, rapid prototyping, and program documentation.

Neuromorphic Computing

CSCI 252 - Levy, Simon D.

An overview of computational methods inspired by the nervous systems of animals. Topics include philosophical foundations of neuromorphic computing, fundamental mathematical concepts, Hopfield nets, Kohonen's Self-Organizing Map, Sparse Distributed Memory, Latent Semantic Analysis, Tensor Products, and current neuromorphic hardware. Readings come from both popular textbooks and the scholarly literature. A major focus of the course is on writing programs to implement and apply the concepts and algorithms studied in the course. 

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

CSCI 397A - Khan, Mohammad T. (Taha)

Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit if the topics are different. A maximum of six credits may be used toward the major requirements.

Fall 2021, CSCI 397A-01: Seminar: Computer and Network Security (3). This course provides a comprehensive overview of the secure design principles of computer systems and networks. We will discuss the various attacks and their corresponding defenses and will frequently reference previous real-world attacks as case studies. Topics will include fundamental security principles, cryptographic protocols, encryption, memory overflow attacks, hardware attacks, web security, social engineering attacks, network security, malware/spyware, botnets, and online privacy.  Although the course's number is 397, this course will count towards the CSCI -315 - CSCI-341 range of elective courses for the major. Khan.

Directed Individual Study

CSCI 403 - Watson, Cody A.

Individual conferences. May be repeated for degree credit if the topics are different.