Provides a strong foundation in HTML, CSS, images, beginning web programming, and web design so that the student can create a complete functional web site in a team based final project.
Introduction to algorithmic problem solving and computer programming. Designed to provide a foundation for further studies in computer science.
Introductory computer science through exploration and analysis of mathematical puzzles and games, and the algorithms that handle them. Prerequisite: No credit if taken after CS 2100.
A fun and accessible breadth-first introduction to the CS community and curricula at UVM. CS faculty serve as guest lecturers to introduce new CS majors to selected topics covered in upper division UVM CS electives. Prerequisites: Computer Science or Computer Science & Information Systems majors who have not yet completed CS 2100. Co-requisite: CS 1210 or CS 2100.
Introduction to analytic and formal methods of computer science with practical examples, including analysis or data structures, recursion relations, proof methods, and logic programming. Credit not awarded for both CS 1640 and MATH 2055. Prerequisites: CS 1210 or CS 2100; MATH 1234 or MATH 1242.
Basic techniques of data harvesting and cleaning; association rules, classification and clustering; analyze, manipulate, and visualize data using programming languages. Basic principles of probability and statistical modeling/inference to make meaning out of large datasets. Credit not awarded after STAT 3000 or greater. Cross-listed with: STAT 1870.
Assist in instruction of undergraduate computer science courses under the direct supervision of a faculty member. Instructor permission required.
Intermediate programming concepts including common data structures, algorithms, style, design, documentation, testing and debugging techniques, and an introduction to object-oriented programming. Prerequisite: CS 1210 with a grade of C- or better.
Introduction to computer system organization including performance, assembly language, machine-level data representation, arithmetic for computers, processor datapath control, memory, and input/output. Includes significant semester project. Cross-listed with: CMPE 2210. Prerequisite: CS 2100.
Design and implementation of linear structures, trees and graphs. Examples of common algorithmic paradigms. Theoretical and empirical complexity analysis. Sorting, searching, and basic graph algorithms. Prerequisites: CS 2100 with a grade of C- or better; minimum Sophomore standing.
Formal languages and expressiveness. Turing completeness and Church's Thesis. Decidability and tractability. Complexity classes and theory of NP completeness. Prerequisites: CS 1640 or MATH 2055. Co-requisite: CS 2240.
Builds programming maturity and proficiency through significant projects with spiral development, including program specification, design, implementation, debugging, testing, validation, internal and external documentation. Focus on advanced topics including efficiency, profiling, modularity, extensibility, programming paradigms, design patterns, memory management, and generics. Prerequisite: CS 2240.
Serves as a foundational course in modern database systems. Introduces the fundamental concepts and techniques of relational database management, data modeling, relational algebra, structured query language, database design and database management. Practical experience will be gained through a series of labs and projects. Credit not awarded after CS 3040 or CS 5040. Prerequisites: CS 1210; minimum Sophomore standing. Pre/Co-requisites: CS 1210; minimum Sophomore standing.
An introduction to artificial intelligence including logic and rule-based approaches, heuristic search, A*, IDA*, minimax, alpha/beta pruning, expectiminimax, Markov models and MDPs, decision tree, ensemble learning / random forest, the neural model and simple multi-layer perceptrons. Other topics, if any may vary. Prerequisite: C- or better in CS 2240.
Introduction to cybersecurity, fundamental security design principles, programming flaws, malicious code, web and database security, cryptography algorithms and hashing functions; overview of computer networks and common network threat vectors. Prerequisites: CS 2210 with a grade of C- or better.
Learn data science techniques, from import to cleaning to visualizing and modeling, using the Python language. Machine learning methods include regression, classification and clustering algorithms. Programming methods include user-defined functions. Prerequisites: CS 1210; STAT 1110, STAT 1410, or STAT 2430. Cross-listed with: STAT 2870.
Service learning experience that benefits the University or the Community under the direction of a CS faculty member. Prerequisite: Instructor permission.
See Schedule of Courses for specific titles. Prerequisite: Instructor permission.
Undergraduate student service as a teaching assistant, usually in an introductory-level course in the discipline, for which credit is awarded. Offered at department discretion.
Supervisory and control software for multiprogrammed computer systems. Processes, threads, synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, secondary storage, case studies. Prerequisites: CS 2300 and CS 2210.
Techniques for processing very large collections of data. Secondary storage. Database design and management. Query languages and optimization. Database recovery. Credit not awarded for both CS 3040 and CS 5040. Prerequisite: CS 2240.
Treatment of software engineering problems and principles, with a focus on iterative software development. A significant part of the course is devoted to two multi-week team projects. Prerequisite: CS 2300.
Explores the research field of data privacy, including privacy attacks on anonymized data, and formal approaches like k-Anonymity and differential privacy. Applies the theory of data privacy to real problems in programming projects. Credit not awarded for both CS 3110 and CS 5110 Prerequisites: CS 2240, CS 2250.
Comprehensive study of algorithms including greedy algorithms, divide and conquer, dynamic programming, graph algorithms and network flow. Computational intractability. Approximation, local search and randomization. Credit not awarded for both CS 3240 and CS 5240. Prerequisite: CS 2240. Pre/co-requisites: Recommended: CS 2250; STAT 2430, or STAT 2510.
Principles of programming language design and fundamental implementation concepts. Syntax, semantics, and static analysis of programs. Provable properties of programming languages such as type safety. Prerequisites: CS 2240, CS 2250.
Covers the foundational theories and methods in the interdisciplinary field of human-computer interaction, focuses on the human-centered design and evaluation of user interfaces for various computing systems, as well as introduces a wide range of topics in current human-computer interaction research. Prerequisites: Minimum Junior standing. Pre/Co-requisites: CS 1080 or equivalent experience; completion of WIL1.
Introduction to machine learning algorithms, theory, and implementation, including supervised and unsupervised learning; topics typically include linear and logistic regression, learning theory, support vector machines, decision trees, backpropagation artificial neural networks, and an introduction to deep learning. Includes a team-based project. Credit not awarded for both CS 3540 and CS 5540. Prerequisites: STAT 2510 or STAT 5510; MATH 2522 or MATH 2544.
A projects-based course focusing on software development for mobile devices, including the concepts of event-driven programming, GUI design and implementation, utilization of hardware sensors, and client/server applications. A significant part of the course is devoted to a multi-month team development project. Prerequisite: CS 2300, Senior standing. Pre/co-requisites: Recommended: CS 2480 or CS 3040.
Data harvesting, cleaning, and summarizing; working with non-traditional, non-numeric data (social network, natural language textual data, etc.); scientific visualization; advanced data pipelines; Project-based. Credit not awarded for both CS 3870 and CS 5870. Prerequisites: CS 1210; STAT 3880 or CS 3540; STAT 2870 or CS 2870. Cross-listed with: STAT 3870.
Oral presentations that pertain to the ethical practice of computer science in government, industry, and academia. Topics may include computer security, copyright, and patent law. Prerequisite: Senior standing in Computer Science.
Seminar to help students develop necessary skills for becoming computing professionals and exposes them to different computing careers. Topics include job search strategies, preparation for technical interviews, networking, and developing soft skills. Several guest lectures by computing professionals and alumni. Prerequisite: CS 2240.
College honors thesis or other department/program honors, under the supervision of a faculty member. Offered at department discretion. See description of Honors Thesis Program in the College of EM section of this catalog.
Covers the theory and practice of database design and application programming, and basic internals of a database management system. Topics include database concepts, data models and database design, query languages, database programming concepts and languages, files and physical design, query processing and optimization, transaction concepts, concurrency control and recovery, and security and authentication. Credit not awarded for both CS 5040 and CS 3040. Prerequisites: Familiarity with basic data structures, algorithms, discrete mathematics, computer organization; Graduate student.
Explores the research field of data privacy, including privacy attacks on anonymized data, and formal approaches like k-Anonymity and differential privacy. Applies the theory of data privacy to real problems in programming projects. Prepares students to perform independent research in the field. Credit not awarded for both CS 5110 and CS 3110. Prerequisite: Graduate student.
Studies how to design and analyze computer program algorithms to solve real-world problems. Begins with a review of the concept of algorithm complexity and basic graph algorithms; and then covers algorithm design approaches such as greedy, divide and conquer, dynamic programming, and network flow; then, computational intractability will be treated. Credit not awarded for both CS 5240 and CS 3240. Prerequisite: Familiarity with data structures and elementary algorithms; Graduate student.
Provides a broad introduction to machine learning and statistical pattern recognition. Topics include: supervised learning (linear regression, logistic regression, neural networks, support vector machines, decision tree, ensemble models, random forest); unsupervised learning (clustering, dimensionality reduction, kernel methods); Also introduces deep learning such as convolutional neural networks and discusses recent applications. Credit not awarded for more than one of the following: CSYS 5540, CS 5540, CS 3540. Prerequisites: Knowledge of statistics as from STAT 2510, knowledge of linear algebra as from MATH 2522 or MATH 2544; Graduate student. Cross-listed with: CSYS 5540.
Provides a comprehensive, breadth-first introduction to natural language processing (NLP), an interdisciplinary field at the intersection of computer science, linguistics, and artificial intelligence. Students will explore both classical approaches and modern deep learning techniques, including large language models, through an integrative and hands-on learning experience. Project-based, emphasizing practical engagement with real-world textual datasets and the development of strong research practices for rigorous research projects. Prerequisite: Programming experience in Python. Cross-listed with: CSYS 5909.
Integrative breadth-first introduction to computational methods for modeling complex systems; dynamical systems, numerical methods, cellular automata, agent-based computing, game theory, genetic algorithms, artificial neural networks, and complex networks. Semester team-based project. Pre/Co-requisites: Computer programming in any language, calculus; linear algebra recommended. Cross-listed with: CSYS 6020.
Research for the Master's Thesis.
Research for Master's project. Prerequisite: Department permission.
Theory and practice of biologically-inspired search strategies, including genetic algorithms, genetic programming, and evolution strategies. Applications include optimization, parameter estimation, and model identification. Significant project. Students from multiple disciplines encouraged. Pre/co-requisites: Familiarity with programming, probability, statistics. Cross-listed with: CSYS 6520.
Advanced data analysis, collection, and filtering; statistical modeling, monte carlo statistical methods, and in particular Bayesian data analysis, including necessary probabilistic background material; a practical focus on real datasets and developing good habits for rigorous and reproducible computational science. Prerequisites: STAT 5870, CS 5870, CSYS 5870, or Instructor permission. Cross-listed with: CSYS 6870, STAT 6870.
Subject will vary from year to year. May be repeated for credit with Instructor permission.
Research for the Doctoral Dissertation.