Course Schedule
COURSE SCHEDULE: fall 2023
CS 1-B
Collaborative Introduction to Computer Science

An optional preparatory course for students with no prior programming experience and limited experience in college-level STEM classes. Basics of programming including variables, control flow, subroutines, and problem solving in a hands-on, collaborative environment. The class will meet over the latter half of the semester, and prepare students to enter CS11 with prior exposure to topics that CS 11 discusses in depth. Pass/fail grading.

Prerequisite: Recommendations: high school algebra.
Megan Monroe
TR 10:30-11:45
Room To Be Announced
CS 4-01
Teaching Computer Science

This course will prepare undergraduates to function effectively and efficiently as undergraduate teaching assistants. Through this course, students will learn pedagogical techniques that match learner needs; discuss ethical and social concerns that UTAs face in the course of a semester; and problem solve together issues that arise as teaching assistants. This course is designed in a learner centered model requiring your active and engaged participation. Through your willingness to share your experiences and expertise and your collaboration with your fellow UTA we will together construct meaningful solutions to difficulty situations. Faculty from Computer Science will participate in some of the sessions as co-facilitators. Students will be expected to complete short readings; keep a reflective blog of your learning as a teacher; give a short final presentation on a topic of interest that you want to explore in more depth to help you in your TA class.

Megan Monroe
CS 10-01
Computer Science for All

Computers are indispensable tools for research. This does not only hold for more technical fields such as physics or chemistry but also for the Humanities and the Social Sciences. While most students are competent users of standard software such as word processing or spreadsheets, the real power of the computer is unleashed when we are able to program it ourselves and make it do exactly what we want it to do.

This course is aimed at people who want to learn how to use computer science to solve basic information processing problems, such as analyzing text data and performing elementary statistics on them. It will cover elementary principles of computer science and will teach the student to independently write their own programs in the computer language Python.

This course is meant for people who have little or no previous experience in computer science. Therefore, in this course we do not assume that the students already know how to write computer programs. However, computer programming is a skill, and learning a new skill takes substantial amounts of effort and time. So the fact that this course is aimed at beginners does not mean that it is easy, or that it will involve less work than our other introduction courses, like e.g. COMP 11. On the contrary, it is very likely the case that this course will involves more effort than other introductory programming courses, if only because the fact that we do not assume any previous experience means that the road to our goal is going to be longer.

IMPORTANT NOTE: Passing this course does NOT fulfill the A&S Mathematics distribution requirement.

To Be Announced
TR 10:30-11:45
Room To Be Announced
CS 11-01
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Megan Monroe
TR 9:00-10:15
Room To Be Announced
CS 11-02
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Megan Monroe
TR 10:30-11:45
Room To Be Announced
CS 12-01
Cyber for Future Policymakers

Relevance of computer technologies to policy development. Internet architecture and basic networking, the Web, cloud architectures, cryptography, security and privacy, AI and machine learning, and open-source systems. Developing technologies, including quantum computing and post-quantum cryptography.

Prerequisite: Recommendations: COMP 10 or COMP 11.
David Lillethun
MW 10:30-11:45
Room To Be Announced
CS 13-01
How Systems Work

How computing systems work: bits, bytes, the representation of information, the CPU, assembly language, programming languages. Networking: including peering, packets, and the Internet. Algorithms and the fundamental limitations of computing.

Prerequisite: Recommendations: COMP 10 or COMP 11.
Mark Sheldon
TR 10:30-11:45
Room To Be Announced
CS 15-01
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Milod Kazerounian
MW 1:30-2:45
Room To Be Announced
CS 15-02
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Milod Kazerounian
MW 4:30-5:45p
Room To Be Announced
CS 20-01
Web Programming

An introduction to techniques, principles, and practices of writing computer programs for the World Wide Web. Server and browser capabilities and limits. Media types, handlers, and limitations. Web programming languages and techniques. Web security, privacy, and commerce. Lectures augmented with programming projects illustrating concepts and current practice.

Prerequisite: COMP 11; or COMP 10 and consent.
Lisa DiOrio
TR 12:00-1:15
Room To Be Announced
CS 23-01
Game Design

Principles, design, and development of games. Game structure, engineering, physics, testing, 2D and 3D rendering, user interfaces, sound, and animation. Security of online games. Applications of Economics, Music, and Psychology in crafting games. Projects include writing game design documents, developing an interactive fiction game, and building a functional game in a team.

Prerequisite: Recommended: Comp 15.
Jason Wiser
T 6:00p-9:00p
Room To Be Announced
CS 30-01
Programming for Data Science

Fundamentals of programming for data-intensive science. Data structures and algorithms for data manipulation, cleaning, and preparation. Design of data manipulation programs. Coding standards and practices. Use and creation of software libraries. Techniques for improving program performance. Examples drawn from data preparation and transformation, statistical data analysis, machine learning, deep learning, and deep data science including recommendation systems and trend analysis.

To Be Announced
CS 40-01
Machine Structure & Assembly-Language Programming

In COMP 40, you will learn about both high-level programming design principles and the low-level structure of computing machines. Design strategies will focus on modularity, abstraction, and separation of interface from implementation. The following topics on machine structure are covered: memory, caches, registers, machine arithmetic, and bitwise operations. We will also investigate the structure of assembly code, relocatable object code, binary machine code, and the translations between them. You will gain a deep understanding of all of these concepts via large-scale, realistic programming projects.

Mandatory lab will be held Fridays: sign up in SIS.

See https://engineering.tufts.edu/cs/current-students/undergraduate/high-demand-enrollment for the form required to get approval to enroll in this class.

Prerequisite: COMP 15.
Mark Sheldon
TR 3:00-4:15
Room To Be Announced
CS 45-01
Computer Organization

Computer organization including performance measurement, instruction set architectures, digital arithmetic, processor datapath, control, pipelining, memory hierarchy, caches and input/output.

Prerequisite: Prerequisite: ES 4
Mark Hempstead
MW 1:30-2:45
Room To Be Announced
CS 61-01
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Karen Edwards
MWF 9:30-10:20
Room To Be Announced
CS 61-02
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Karen Edwards
MWF 10:30-11:20
Room To Be Announced
CS 86-01
Object-Oriented Programming for Graphical User Interfaces (formerly Comp 106)

Object-oriented programming (OOP) and design, using the Java language. General OOP concepts (classes and instances, methods, inheritance) plus specifics of programming in Java, with emphasis on application to graphical user interfaces (GUIs). Design and programming projects using Java and toolkits.

Prerequisite: Comp 15 or permission of the instructor.
Robert J. K. Jacob
MW 4:30-5:45p
Room To Be Announced
CS 97-01
Senior Capstone Project I

Requirements analysis and design of a senior capstone project. Requirements analysis and elicitation methods, and prototyping. Design principles and methods, including designing for usability, security, testability, performance, and scaling. Project management and planning, including cost and effort estimation. Writing effective documentation.

Prerequisite: COMP40 and Senior Standing.
David Lillethun
F 12:00-2:45
Room To Be Announced
CS 105-01
Programming Languages

Principles and application of computer programming languages. Emphasizes ideas and techniques most relevant to practitioners, but includes foundations crucial for intellectual rigor: abstract syntax, lambda calculus, type systems, dynamic semantics. Case studies, reinforced by programming exercises. Grounding sufficient to read professional literature.

Prerequisite: COMP 15 (Data Structures) and one semester of Discrete Mathematics (COMP/MATH 22 or 61).
Milod Kazerounian, Richard Townsend
MW 10:30-11:45
Room To Be Announced
CS 107-01
Compilers

In COMP 181, you will learn about the design and implementation of modern compilers. The course will focus on the main steps of general compilation (Scanning, Parsing, Semantic Checking, and Code Generation), while also introducing some specific compilation techniques for language-specific features. Traditional compiler optimizations may also be introduced. Outside the classroom, the focus of the course is an intensive, semester-long project: you and a team will design a small programming language and implement a compiler for it using the OCaml language. The algorithms and concepts you will learn have broad application outside of the course: many programming tasks can be understood as variations of interpretation or translation, and understanding how a compiler operates will further develop your abstract thinking skills and make you a better programmer.

Prerequisite: CS 40 and CS 105, or graduate standing, or permission of the instructor.
Richard Townsend
MW 1:30-2:45
Room To Be Announced
CS 115-01
Database Systems

Fundamental concepts of database management systems. Topics include: data models (relational, object-oriented, and others); the SQL query language; implementation techniques of database management systems (storage and index structures, concurrency control, recovery, and query processing); management of unstructured and semistructured data; and scientific data collections.

Prerequisite: COMP 15.
Johes Bater
MW 4:30-5:45p
Room To Be Announced
CS 116-01
Introduction to Security

A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks. Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects.

Prerequisite: Comp 15.
Ming Chow
TR 4:30-5:45p
Room To Be Announced
CS 117-01
Internet-Scale Distributed Systems: Lessons from the World Wide Web

Please note that this course was formerly numbered COMP 150-IDS. The World Wide Web, one of the most important developments of our time, is a unique and in many ways innovative distributed system. This course will explore the design decisions that enabled the Web's success, and from those will derive important and sometimes surprising principles for the design of other modern distributed systems. We will introduce and draw comparisons with more traditional distributed system designs, including distributed objects, client/server, pub/sub, reliable queuing, etc. We will also study a few (easily understood) research papers and some of the core specifications of the Web. Specific topics to be covered include: global uniform naming; location-independence; layering and leaky abstractions; end-to-end arguments and decentralized innovation; Metcalfe's law and network effects; extensibility and evolution of distributed systems; declarative vs. procedural languages; Postel's law; caching; and HTML/XML/JSON document-based computing vs. RPC. The purpose of this course is not to teach Web site development, but rather to explore lessons in system design that can be applied to any complex software system. More detailed course information can be found at https://www.cs.tufts.edu/comp/117/shouldItakeit

Prerequisite: CS 40 or permission of the instructor.
Noah Mendelsohn
TR 4:30-5:45p
Room To Be Announced
CS 119-01
Big Data

"Big Data" deals with techniques for collecting, processing, analyzing and acting on data at internet scale: unprecedented speed, scale, and complexity.

This course introduces the latest techniques and infrastructures developed for big data including parallel and distributed database systems, map-reduce infrastructures, scalable platforms for complex data types, stream processing systems, and cloud-based computing. The course content will be a blend of theory, algorithms and practical (hands on) work.

Prerequisites: A beginning course in databases, some familiarity with Python, shell programming, Java, Scala, SQL and JavaScript.

J Singh
TR 4:30-5:45p
Barnum/Dana Hall 008
CS 121-01
Software Engineering

Software engineering is an engineered discipline in which the aim is the production of software products, delivered on time and within a set budget, that satisfies the client’s needs. It covers all aspects of software production ranging from the early stage of product concept to design and implementation to post-delivery maintenance. This course covers the major concepts and techniques of software engineering including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools so that students can prepare for their future careers as software engineers. The course will combine a strong technical focus with a project providing the opportunity to obtain hands-on experiences on entire phases and workflow of the software process.

Prerequisite: COMP 40, graduate standing, or instructor consent.
Jeff Foster
MW 3:00-4:15
Room To Be Announced
CS 131-01
Artificial Intelligence

History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning.

Prerequisite: Comp 15 and either COMP/MATH 22 or 61 or familiarity with both symbolic logic and basic probability theory.
Fabrizio Santini
MW 6:00p-7:15p
Room To Be Announced
CS 133-01
Human-Robot Interaction

This course will provide an overview of the up and coming field of human-robot interaction (HRI) which is located squarely in the intersection of psychology, human factors engineering, computer science, and robotics. HRI has become a major research focus recently with the NSF's National Robotics Initiative and the push countries around the globe to develop robots for various societal tasks, from new flexible and adaptive robots for industrial manufacturing, to socially assistive robots for eldercare. In this course, we will examine this field from an interdisciplinary perspective, reading key papers in HRI that intersect computer science, robotics, cognitive and social psychology (since there is no suitable textbook yet, all reading materials will be made available). Students will give short presentations on HRI studies and designs and work in interdisciplinary groups on a term project which will require them to design and conduct an HRI study.

Prerequisite: Senior or graduate standing in Computer Science, or permission of instructor.
Elaine Short
MW 3:00-4:15
Room To Be Announced
CS 134-01
Computational Models in Cognitive Science

Scientific logic of using computational models for testing theories in cognitive science. Connectionist and Bayesian models; agent-based simulation. Emphasis upon using models in combination with empirical data to test theories. Appropriate use and critical evaluation of computational modeling as found in scientific publications. Recommendations: COMP 10, 11, or some programming experience.

JP de Ruiter
TR 8:05a-9:20
Room To Be Announced
CS 135-01
Introduction to Machine Learning

An overview of methods whereby computers can learn from data or experience and make decisions accordingly. Topics include supervised learning, unsupervised learning, reinforcement learning, and knowledge extraction from large databases with applications to science, engineering, and medicine.

Prerequisite: Comp 15 and COMP/MATH 22 or 61 or consent of instructor. (Comp 160 is highly recommended).
Michael Hughes
TR 10:30-11:45
Room To Be Announced
CS 137-01
Deep Neural Networks

Deep neural networks and their applications including computer vision and natural language processing. Feed-forward, convolutional, and recurrent neural networks. Techniques for training deep neural networks, including optimization, regularization, and usage of related software.

Prerequisite: Recommendations: COMP 135, MATH 42, and MATH 70; or consent of instructor.
Liping Liu
TR 12:00-1:15
Room To Be Announced
CS 138-01
Reinforcement Learning

"Reinforcement learning problems involve learning what to do — how to map situations to actions — so as to maximize a numerical reward signal." - Sutton and Barto ("Reinforcement Learning: An Introduction", course textbook)

This course will focus on agents that much learn, plan, and act in complex, non-deterministic environments. We will cover the main theory and approaches of Reinforcement Learning (RL), along with common software libraries and packages used to implement and test RL algorithms. The course is a graduate seminar with assigned readings and discussions. The content of the course will be guided in part by the interests of the students. It will cover at least the first several chapters of the course textbook. Beyond that, we will move to more advanced and recent readings from the field (e.g., transfer learning and deep RL) with an aim towards focusing on the practical successes and challenges relating to reinforcement learning.

There will be a programming component to the course in the form of a few short assignments and a final projects.

Approved as a category 2 elective in Data Science (analysis and interfaces).

Prerequisite: Students are expected to be proficient programmers in at least one of the following languages: C++, Java, or Python. Prior coursework (or experience) in Artificial Intelligence and/or Machine Learning is highly recommended, but not required.
Jivko Sinapov
TR 10:30-11:45
Room To Be Announced
CS 139-01
Ethics for AI, Robotics, and Human Robot Interaction

This course will provide an overview of the ethical problems and challenges prompted by current and future technological advances in AI, robotics, and human-robot interaction. It will start by reviewing the philosophical foundations of the main ethical theories (virtue ethics, deontology, utilitarianism) and link them to different algorithmic approaches in artificial agents (rule-based, utility-based, behavior- based, etc.). Explicating and contrasting the assumptions underlying each algorithmic approach (e.g., policy-based decision-making vs. rule-based reasoning), functional tradeoffs and implications for autonomous robots and AI systems will be discussed. The scope will then be widened to moral psychology and human-robot/human-technology interaction to move beyond individual autonomous systems into the realm of social interactions between humans and autonomous systems, discussing the societal implications of AI and robot technology. Social, economical, legal, and military ramifications will be considered, with the aim of exposing the unique challenges AI and robot technology pose for humanity, compared to other disruptive technologies, but also they unique opportunities these technologies enable for current and future generations.

Prerequisite: Senior standing, or permission of instructor. Recommendations: CS/MATH 61 and CS 15. This is an undergraduate-only course; graduate students in the HRI program will need to enroll in CS 239-01.
Matthais Scheutz
TR 9:00-10:15
Joyce Cummings Center 402
CS 150-02
Quantum Information Science

This is a graduate seminar focusing on special topics in quantum computing and information science. The primary goal of this seminar is to prepare enthusiastic students to explore the literature and perform research in this field. Another goal is to work together as a class and prepare pedagogical materials that explain basic concepts in quantum computing and information science using simple and accessible language. We will post these materials as blog posts as we cover different topics.

Depending on student interest, potential topics include, but are not limited to, algorithms, post-quantum cryptography, quantum complexity classes, Hamiltonian complexity, nonlocal games, applications of quantum information science in other areas of physics, mathematics, and computer science, such as quantum-inspired algorithms, machine learning, satisfiability, phase transitions, probabilistically checkable proofs, connections with quantum gravity, etc. There are no assignments or exams. Each student is responsible for contributing to class discussions, presenting special topics, and leading discussion sessions. They are furthermore responsible for writing reports explaining the concepts covered in these sessions using simple language and collectively preparing them as blog posts. We will make these blog posts available to the public. Enthusiastic undergraduate students are welcome to join this class. Students from CS, mathematics, and physics can benefit from this class.

Prerequisite: Quantum complexity theory (CS-150), quantum computer science (CS-150), Quantum Information and Quantum Computation (COMP 151-02), equivalent courses, or permission from the instructor. Strong background in related areas of physics and mathematics is recommended. Strong background in linear algebra is specifically required (e.g. linear operators and their properties). Solid background in areas of computer science, such as the theory of computing, algorithms, and complexity theory will be very helpful.
Saeed Mehraban
TR 1:30-2:45
Room To Be Announced
CS 150-05
Data and Power: Surveillance

What does it mean to do data science in a society filled with competing economic, social, and political interests? In this course, we will draw from historical perspectives on present-day issues in computer science to develop a social and political understanding of what the problem is, how it came to be, and what we can do about it. Our topic of focus will be surveillance, a problem that intersects economics through capitalism, race through histories of the policing of Black and Brown people, and power through systems of control. Throughout the three arcs comprising the class – (1) defining surveillance and learning its history, (2) developing an ethical inquiry and critique of surveillance technology, and (3) applying this practice to present day related problems – we will build “muscles” of analysis and practice that will build a foundation for budding data scientists to navigate a social and political world.

Nick Rabb
MW 4:30-5:45p
Room To Be Announced
CS 151-01
Introduction to Mobile Application Development on iOS and Swift

This course introduces the basics of contemporary mobile application development using Apple's iOS platform. The main requirement of the course is to build a functioning application in iOS. The course is divided into six modules, each of which covers a different aspect of development which is used in a final project. Module 1 begins with the major features of the Swift programming language and its standard library, along with use of the Xcode IDE for Swift development. Basic language features are covered lightly so that extensive discussion may be focused on differentiating features of the language including closures, optionals, the Swift type system (tuple/enum/struct/class/func), and generics. Module 2 focuses on elements of Functional Reactive Programming with Apple’s Combine library. Module 3 deals with correct application architecture, using a uni-directional dataflow model. Module 4 covers drawing, touch handling, layout and programming for devices of various sizes and aspect ratios, making extensive use of Apple's SwiftUI technology. Module 5 takes the student through a full animation cycle showing which elements of the UI can be smoothly animated and how. Module 6 finishes instruction with a discussion of navigation, tabular data presentation, and application state management. Frequent small assignments progress from basic programming to realistic app development with a focus on responsive device graphics and algorithms. Code design and architecture are emphasized. The course culminates in a final project which integrates all topics discussed into a single coherent whole.

Prerequisite: Completion of CS 15 or graduate standing.
Ronald Simmons
TR 12:00-1:15
Room To Be Announced
CS 152-01
Human Factors in Security and Privacy

Humans are often viewed as the weakest link in security. However, there is growing recognition that technology alone is insufficient to solve all security and privacy problems. Human factors play and essential role. A provably secure system is only as secure as the way users choose to use it, and system builders need to account for these user decisions if they wish to provide security and usability. In this class, we will cover a variety of usability and human interaction (HCI) problems of privacy and security. We will also cover common HCI methods that can be used to measure usability issues in security and privacy mechanisms. Students are expected to complete homeworks on the topic and complete a semester-long researh project designed to give students practical experience understanding and designing studies which evaluate usability issues in security and privacy systems.

Daniel Votipka
TR 12:00-1:15
Room To Be Announced
CS 160-01
Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Martin Allen, Karen Edwards
MW 4:30-5:45p
Room To Be Announced
CS 163-01
Computational Geometry

(Cross-listed as MATH 181.)Design and analysis of algorithms for geometric problems. Topics include proof of lower bounds, convex hulls, searching and point location, plane sweep and arrangements of lines, Voronoi diagrams, intersection problems, decomposition and partitioning, farthest-pairs and closest-pairs, rectilinear computational geometry.

Prerequisite: COMP 160, COMP 170, any 100+ MATH course, or permission of the instructor.
Diane Souvaine
MW 1:30-2:45
Room To Be Announced
CS 169-01
Statistical Bioinformatics

Computational methods and analyses in the context of bioinformatics and biomedical data. Statistical methods in bioinformatics and biomedicine, including the heterogeneous high-dimensional data that tends to arise in this context. Assessment of hypotheses and data quality, visualization, and identification of patterns, outliers, and artifacts of bioinformatics data. Probability estimation through simulation. Presentation of statistical results to specific audiences.

Prerequisite: Recommendations: CS 11 and (CS/Math 61 or Math 65), or graduate standing.
Donna Slonim
MW 3:00-4:15
Room To Be Announced
CS 170-01
Computation Theory

Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages including context-free languages and regular sets. Important problems including the halting problem and language equivalence theorems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
To Be Announced
TR 1:30-2:45
Room To Be Announced
CS 201-01
Cyber for Future Policymakers

Relevance of computer technologies to policy development. Internet architecture and basic networking, the Web, cloud architectures, cryptography, security and privacy, AI and machine learning, and open-source systems. Developing technologies, including quantum computing and post-quantum cryptography. A recitation and graduate-level assignments are required. Four credit hours. Prerequisites: Graduate standing in a discipline other than Computer Science, Data Science, Bioinformatics, Cognitive Science, or Human-Robot Interaction.

Prerequisite: Recommendations: COMP 10 or COMP 11.
David Lillethun
MWF 10:30-11:45
Room To Be Announced
CS 202-01
How Systems Work

Graduate version of COMP13. How computing systems work: bits, bytes, the representation of information, the CPU, assembly language, programming languages. Networking: including peering, packets, and the Internet. Algorithms and the fundamental limitations of computing. Prerequisites: Graduate standing in a discipline other than Computer Science, Data Science, Bioinformatics, Cognitive Science, or Human-Robot Interaction.

Prerequisite: Recommendation: COMP 10 or COMP 11.
Mark Sheldon
EN 1-04
The Craft of Computer Science

While it might be obvious why we need research in biology or history, Computer Science research is necessary to reinvent the field and to drive discoveries across many disciplines. This course will teach you the foundations of research. Students will work with a faculty mentor and a student group on a research project. Research topics include machine learning, computer security, quantum computing, human-robotics interaction, computational biology, computational geometry, and others. The course will cover topics including identifying and formulating research problems, reading and evaluating research papers, literature searching, self-guided learning, designing research studies, and data analysis. Students will practice working in a team, goal setting, activity logging, and communicating with others. This is a non-coding class. No prior coding or CS experience is required. Student groups are expected to develop a research proposal by the end of the semester and to be well-prepared to participate in future Computer Science research experiences.

Soha Hassoun
MW 3:00-4:15
Joyce Cummings Center 610
EN 1-08
Simple Robotics

Introduction to robot construction, programming, computer vision, event-based programming, artificial intelligence, and elementary controls. Basic principles of robotics for students with minimal or no prior programming/building background. In-class competition-based laboratories and hands-on group projects using the LEGO MINDSTORMS platform.

Ethan Danahy
MWF 10:30-11:45
Anderson Hall 309
EN 1-18
Exploring Computer Science

How does one translate a strategy written in English into executable computer code written in the C++ programming language or some other high-level language? How does one evaluate two different strategies for solving the same problem? What sorts of problems are solved well by computers? How can the solutions be displayed graphically? This course is intended for those who have NO programming experience. This sampling of various topics within the field of computer science will give the student a taste of the broader spectrum that constitutes computer science. The course will include a general introduction to the field of computer science, to the emacs editor, to the C++ programming language, and to the Linux operating system.

Prerequisite: A sincere interest in learning more about computer science and NO prior programming experience.
Diane Souvaine
MW 3:00-4:15
Anderson Hall 112