| CS 1-B |
Collaborative Introduction to Computer ScienceAn 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. |
TR 10:30-11:45 Room To Be Announced |
| CS 4-01 |
Teaching Computer ScienceThis 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. |
|
| CS 10-01 |
Computer Science for AllComputers 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.
|
TR 10:30-11:45 Room To Be Announced |
| CS 11-01 |
Introduction to Computer ScienceThe 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. |
TR 9:00-10:15 Room To Be Announced |
| CS 11-02 |
Introduction to Computer ScienceThe 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. |
TR 10:30-11:45 Room To Be Announced |
| CS 12-01 |
Cyber for Future PolicymakersRelevance 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. |
MW 10:30-11:45 Room To Be Announced |
| CS 13-01 |
How Systems WorkHow 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. |
TR 10:30-11:45 Room To Be Announced |
| CS 15-01 |
Data StructuresA 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. |
MW 1:30-2:45 Room To Be Announced |
| CS 15-02 |
Data StructuresA 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. |
MW 4:30-5:45p Room To Be Announced |
| CS 20-01 |
Web ProgrammingAn 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. |
TR 12:00-1:15 Room To Be Announced |
| CS 23-01 |
Game DesignPrinciples, 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. |
T 6:00p-9:00p Room To Be Announced |
| CS 30-01 |
Programming for Data ScienceFundamentals 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. |
|
| CS 40-01 |
Machine Structure & Assembly-Language ProgrammingIn 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.
|
TR 3:00-4:15 Room To Be Announced |
| CS 45-01 |
Computer OrganizationComputer organization including performance measurement, instruction set architectures, digital arithmetic, processor datapath, control, pipelining, memory hierarchy, caches and input/output. Prerequisite: Prerequisite: ES 4 |
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. |
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. |
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. |
MW 4:30-5:45p Room To Be Announced |
| CS 97-01 |
Senior Capstone Project IRequirements 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. |
F 12:00-2:45 Room To Be Announced |
| CS 105-01 |
Programming LanguagesPrinciples 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). |
MW 10:30-11:45 Room To Be Announced |
| CS 107-01 |
CompilersIn 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. |
MW 1:30-2:45 Room To Be Announced |
| CS 115-01 |
Database SystemsFundamental 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. |
MW 4:30-5:45p Room To Be Announced |
| CS 116-01 |
Introduction to SecurityA 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. |
TR 4:30-5:45p Room To Be Announced |
| CS 117-01 |
Internet-Scale Distributed Systems: Lessons from the World Wide WebPlease 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. |
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.
|
TR 4:30-5:45p Barnum/Dana Hall 008 |
| CS 121-01 |
Software EngineeringSoftware 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. |
MW 3:00-4:15 Room To Be Announced |
| CS 131-01 |
Artificial IntelligenceHistory, 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. |
MW 6:00p-7:15p Room To Be Announced |
| CS 133-01 |
Human-Robot InteractionThis 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. |
MW 3:00-4:15 Room To Be Announced |
| CS 134-01 |
Computational Models in Cognitive ScienceScientific 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. |
TR 8:05a-9:20 Room To Be Announced |
| CS 135-01 |
Introduction to Machine LearningAn 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). |
TR 10:30-11:45 Room To Be Announced |
| CS 137-01 |
Deep Neural NetworksDeep 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. |
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)
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. |
TR 10:30-11:45 Room To Be Announced |
| CS 139-01 |
Ethics for AI, Robotics, and Human Robot InteractionThis 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. |
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.
|
TR 1:30-2:45 Room To Be Announced |
| CS 150-05 |
Data and Power: SurveillanceWhat 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. |
MW 4:30-5:45p Room To Be Announced |
| CS 151-01 |
Introduction to Mobile Application Development on iOS and SwiftThis 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. |
TR 12:00-1:15 Room To Be Announced |
| CS 152-01 |
Human Factors in Security and PrivacyHumans 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. |
TR 12:00-1:15 Room To Be Announced |
| CS 160-01 |
AlgorithmsIntroduction 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. |
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. |
MW 1:30-2:45 Room To Be Announced |
| CS 169-01 |
Statistical BioinformaticsComputational 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. |
MW 3:00-4:15 Room To Be Announced |
| CS 170-01 |
Computation TheoryModels 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. |
TR 1:30-2:45 Room To Be Announced |
| CS 201-01 |
Cyber for Future PolicymakersRelevance 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. |
MWF 10:30-11:45 Room To Be Announced |
| CS 202-01 |
How Systems WorkGraduate 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. |
|
| EN 1-04 |
The Craft of Computer ScienceWhile 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. |
MW 3:00-4:15 Joyce Cummings Center 610 |
| EN 1-08 |
Simple RoboticsIntroduction 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. |
MWF 10:30-11:45 Anderson Hall 309 |
| EN 1-18 |
Exploring Computer ScienceHow 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. |
MW 3:00-4:15 Anderson Hall 112 |
summer 2023