Computer Science Department
Computer Science (CS) is a vibrant subject with academic depth, enormous growth, and universal economic impact. Computers are now ubiquitous in society and influence the way we learn, the way we do science and business, and the way we interact with and understand our world.
Edsgar Dijkstra (a renowned computer scientist, 1930-2002) is reputed to have said “Computer Science is no more about computers, than astronomy is about telescopes.” Rather, CS is aptly defined as the science of problem solving. CS requires a combination of logical thinking, creativity, problem decomposition, implementation, verification and validation, and teamwork. Computing Careers are extremely versatile, lucrative, and in tremendous and growing demand.
UVM CS courses provide a mixture of lecture-based and hands-on experiential learning exercises. The curricula provide a solid foundation in both applied and theoretical aspects of computing, preparing students for future careers and/or graduate study in computing. Many students complete paid internships over the summer.
Curricula
At the undergraduate level, UVM Computer Science offers bachelor’s degrees, an accelerated M.S. degree, a minor, and a non-degree Certificate in Computer Software:
bachelor of science in computer science (bs cs)
The Bachelor of Science in Computer Science provides the most depth in computer science, mathematics and statistics, and the most flexibility in the remaining electives. A minor is encouraged, but not required. The BS CS is offered through the College of Engineering & Mathematical Sciences.
Bachelor of science - computer science and information systems major (bs csis)
The Bachelor of Science, major in Computer Science and Information Systems, is an interdisciplinary degree that combines computer science with business, offering a competitive combination of skills and knowledge. The BS CSIS is offered through the College of Engineering & Mathematical Sciences, in cooperation with the Grossman School of Business.
Bachelor of science - data science major (bs ds)
The Bachelor of Science, major in Data Science, is a transdisciplinary program that provides students with a strong education at the intersection of computer science, mathematics, and statistics. A minor is encouraged, but not required. The BS DS is offered through the College of Engineering & Mathematical Sciences.
Bachelor of arts - computer science major (ba cs)
The Bachelor of Arts, major in Computer Science, provides a computer science major in the context of a liberal education with breadth in social science, humanities, foreign language, literature, and fine art. A minor is required. The BA CS is offered through the College of Arts & Sciences. Information on this program can be found in the College of Arts & Sciences portion of the Undergraduate Catalogue.
accelerated masters programs
The Accelerated Masters Programs in Computer Science and in Complex Systems & Data Science are open to academically strong juniors (GPA 3.2 or higher) from any major who have met the prerequisites. The AMP allows students to apply two upper division courses towards both bachelor's and master's degrees, enabling completion of the M.S. in Computer Science or M.S. in Complex Systems & Data Science in as little as one additional year beyond the Bachelor's degree. No GRE is required, and 30% tuition scholarships are available. Information on the AMP can be found on the CEMS website.
computer science minor
The minor in Computer Science is a flexible 6-course program, which is a great complement to virtually any other UVM major and adds marketable skills.
CERTIFICATE IN Computer science
A non-degree Certificate in Computer Software is a flexible 5-course program offered jointly with the Division of Continuing Education. It can be used to obtain career skills or to make up pre-requisites for the MS program in CS. Information about this program can be found on the Professional and Continuing Education Website.
Regulations
Students pursuing the Bachelor of Science in Computer Science, or the Bachelor of Science degree with majors in Computer Science & Information Systems or Data Science, are subject to the Academic Standards in CEMS outlined in this catalogue.
ADDITIONAL REGULATIONS
In order to earn the Bachelor of Science in Computer Science or the Bachelor of Science degree with a major in Computer Science & Information Systems, students must achieve a minimum GPA of 2.0 in all courses with a CS prefix. The minimum 2.0 GPA also includes courses without a CS prefix that are substituted for a CS course requirement.
Complex Systems and Data Science AMP
Complex Systems and Data Science M.S.
Complex Systems and Data Science Ph.D.
Computer Science AMP
Computer Science M.S.
Computer Science Ph.D.
See the online Graduate Catalogue for more information.
Courses
CS 1060. Exploring Cybersecurity. 3 Credits.
Fundamental concepts and tools utilized by cybersecurity professionals to assess and detect software and network vulnerabilities; best practices in physical and data security through the use of appropriate risk management methodologies. No credit if taken after CS 2660 or CS 3660.
CS 1080. Intro to Web Site Dev. 0 or 3 Credits.
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. Catamount Core: QR.
CS 1210. Computer Programming I. 3 Credits.
Introduction to algorithmic problem solving and computer programming. Designed to provide a foundation for further studies in computer science. Catamount Core: QD, QR.
CS 1320. Puzzles, Games & Algorithms. 0 or 3 Credits.
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. Catamount Core: QD.
CS 1500. Seminar for New CS Majors. 1 Credit.
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.
CS 1640. Discrete Structures. 3 Credits.
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. Catamount Core: QR.
CS 1870. Intro to Data Science. 3 Credits.
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. Cross-listed with: STAT 1870. Catamount Core: QR.
CS 1910. Instructing in Computer Sci. 0.5-6 Credits.
Assist in instruction of undergraduate computer science courses under the direct supervision of a faculty member. Duties may include grading, office hours, laboratory and/or recitation instruction, or other related activities. Instructor permission required. Prerequisite: Instructor Permission.
CS 1990. Special Topics. 1-18 Credits.
See Schedule of Courses for specific titles. Prerequisite: Instructor permission.
CS 1991. Internship. 1-3 Credits.
On-site supervised work experience combined with a structured academic learning plan directed by a faculty member or a faculty-staff team in which a faculty member is the instructor of record, for which academic credit is awarded. Offered at department discretion.
CS 1993. Independent Study. 1-18 Credits.
A course which is tailored to fit the interests of a specific student, which occurs outside the traditional classroom/laboratory setting under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.
CS 1994. Teaching Assistantship. 0.5-6 Credits.
Assist in instruction of undergraduate computer science courses under the direct supervision of a faculty member. Instructor permission required.
CS 2100. Intermediate Programming. 4 Credits.
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. Catamount Core: QR.
CS 2210. Computer Organization. 3 Credits.
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. Prerequisite: CS 2100. Catamount Core: QR.
CS 2240. Data Struc & Algorithms. 3 Credits.
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. Catamount Core: QR.
CS 2250. Computability& Complexity. 3 Credits.
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. Catamount Core: QR.
CS 2300. Advanced Programming. 3 Credits.
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. Catamount Core: QR, WIL2.
CS 2450. Web Client Programming. 3 Credits.
Covers client side programming in the web browser. Explores the JavaScript programming language to include user actions in your web site, and work with the DOM (Document Object Model). Semester project. Prerequisites: CS 1080; CS 1210. Catamount Core: QR.
CS 2480. Database Design for Web. 3 Credits.
Design and implementation of a relational database model using SQL and PHP. Open ended final team based project, examples: ecommerce site, blogging site, members only site, learning site. Prerequisites: CS 1080, CS 1210. Catamount Core: QR.
CS 2660. Cybersecurity Principles. 3 Credits.
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. No credit if taken after CS 3660. Prerequisites: CS 1080, CS 2100 with a grade of C- or better. Catamount Core: QR.
CS 2670. Cybersecurity Defense. 3 Credits.
Cyber defense policy, privacy, ethics; network threat defense, intrusion detection systems, intro to penetration testing, OS security principles, system/network admin, cloud, mobile and IoT security; overview of security planning, management and incident response. Prerequisite: CS 2660 or CS 3660.
CS 2830. Embedded Programming in C. 2-3 Credits.
Fundamental exercises in C programming for embedded systems (e.g., Arduino platform) including variable types, pointers, memory allocation, input/output, etc. and demonstration of advanced knowledge of these embedded systems concepts (second credit); with embedded systems project (third credit). Prerequisites: CS 1210. Cross-listed with: EE 2830. Catamount Core: QR.
CS 2870. Basics of Data Science. 3 Credits.
Basic data science techniques, from import to cleaning to visualizing and modeling, using the R language. Machine learning methods include regression, classification and clustering algorithms. Programming methods include user-defined functions. Prerequisite: STAT 1110, STAT 1410, or STAT 2430. Cross-listed with: STAT 2870. Catamount Core: QR.
CS 2880. Inclusive Computing. 3 Credits.
Introduces the concept of identity and how it manifests in the broad field of computing. Provides theoretical foundation to understand biases in computing, covers a wide range of diversity, equity, and inclusive (DEI) challenges in computing, and discusses various DEI problems in real-world computing systems (e.g., algorithms, AI, data, design). Prerequisite: Minimum Sophomore standing. Pre/Co-requisite: CS 1080 or equivalent experience. Catamount Core: D2.
CS 2920. Service Learning in CS. 1-3 Credits.
Service learning experience that benefits the University or the Community under the direction of a CS faculty member. Prerequisite: Instructor permission.
CS 2990. Special Topics. 1-18 Credits.
See Schedule of Courses for specific titles. Prerequisite: Instructor permission.
CS 2991. Internship. 1-18 Credits.
On-site supervised work experience combined with a structured academic learning plan directed by a faculty member or a faculty-staff team in which a faculty member is the instructor of record, for which academic credit is awarded. Offered at department discretion.
CS 2993. Independent Study. 1-18 Credits.
A course which is tailored to fit the interests of a specific student, which occurs outside the traditional classroom/laboratory setting under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.
CS 2994. Teaching Assistantship. 1-3 Credits.
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.
CS 2995. Undergraduate Research. 1-18 Credits.
Undergraduate student work on individual or small team research projects under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.
CS 3010. Operating Systems. 3 Credits.
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. Catamount Core: QR.
CS 3020. Compiler Construction. 3 Credits.
Covers the design and construction of compilers and translation of high-level programming languages to assembly language. Topics include code representation, register allocation, optimization, static analysis, mutable data, garbage collection, and compilation of higher-order language features. Prerequisites: CS 2240, CS 2250.
CS 3040. Database Systems. 3 Credits.
Techniques for processing very large collections of data. Secondary storage. Database design and management. Query languages and optimization. Database recovery. Prerequisite: CS 2240. Catamount Core: QR.
CS 3050. Software Engineering. 3 Credits.
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. Catamount Core: QR.
CS 3060. Evolutionary Robotics. 3 Credits.
Exploration of the automated design of autonomous machines using evolutionary algorithms. Coursework involves reading of research papers, programming assignments and a final project. Prerequisites: Junior standing and programming experience, or Instructor permission. Catamount Core: QR.
CS 3110. Data Privacy. 3 Credits.
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. Prerequisites: CS 2240, CS 2250.
CS 3220. Computer Architecture. 3 Credits.
Architecture of computing systems. Control unit logic, input/output processors and devices, asynchronous processing, concurrency, parallelism, and memory hierarchies. Prerequisite: CS 2210. Catamount Core: QR.
CS 3240. Algorithm Design & Analysis. 3 Credits.
Comprehensive study of algorithms including greedy algorithms, divide and conquer, dynamic programming, graph algorithms and network flow. Computational intractability. Approximation, local search and randomization. Prerequisite: CS 2240. Pre/co-requisites: Recommended: CS 2250; STAT 2430, or STAT 2510. Catamount Core: QR.
CS 3250. Programming Languages. 3 Credits.
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. Catamount Core: QR.
CS 3260. Software Verification. 3 Credits.
Principles and practice of software specification and verification. Design of algorithms which are verified correct using interactive or automated, software-based tools. Emphasis on the design space for software specification, and the spectrum of verification goals ranging from shallow to deep verification. Includes a course project. Prerequisites: CS 2240, CS 2250. Catamount Core: QR.
CS 3280. Human-Computer Interaction. 3 Credits.
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. Catamount Core: WIL2.
CS 3430. Theory of Computation. 3 Credits.
Reducibility and decidability, recursion theory, time and space complexity, P, NP, NP-completeness, PSPACE, PSPACE-completeness, L and NL, advanced topics in computability and complexity. Prerequisites: CS 2240 and CS 2250. Catamount Core: QR.
CS 3530. Reinforcement Learning. 3 Credits.
Students will program agents that learn to optimize a reward function using Reinforcement Learning; Markov Decision Processes with discrete states, Value Iteration, Policy Iteration, Q-learning and SARSA, methods for value function approximation in complex domains using linear and non-linear methods. Prerequisites: CS 1640 or MATH 2055; STAT 2510 or STAT 5510; CS 2100. Pre/Co-requisites: MATH 2522 or MATH 2544; CS 2250. Catamount Core: QR.
CS 3540. Machine Learning. 3 Credits.
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. Prerequisites: STAT 2510 or STAT 5510; MATH 2522 or MATH 2544. Catamount Core: QR.
CS 3559. Cryptography. 3 Credits.
A survey of classical and modern cryptography. Topics include the strengths and weaknesses of various cryptosystems, specific public-key and private-key cryptosystems such as RSA, ElGamal, and elliptic curve cryptosystems, as well as digital signatures and key exchange. Prerequisites: MATH 2055 or CS 1640; MATH 2248, MATH 2522, or MATH 2544. Cross-listed with: MATH 3559.
CS 3650. Computer Networks. 3 Credits.
Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: the Internet; wired and wireless communications protocols; network security protocols. Prerequisites: CS 2240. Catamount Core: QR.
CS 3660. Network Secrty&Cryptography. 3 Credits.
Security and secrecy in a networked environment. Cryptography: public and private key. Authentication: trusted agents, tickets. Electronic mail and digital signatures. Privacy and national security. Prerequisite: CS 2240. Catamount Core: QR.
CS 3737. Intro to Numerical Analysis. 3 Credits.
Error analysis, root-finding, interpolation, least squares, quadrature, linear equations, numerical solution of ordinary differential equations. Prerequisites: MATH 2248; MATH 2522, MATH 2544, or MATH 3201; CS 1210. Cross-listed with: MATH 3737.
CS 3750. Mobile App Development. 3 Credits.
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. Catamount Core: QR.
CS 3870. Data Science I - Pinnacle. 3 Credits.
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. Prerequisites: CS 1210; STAT 1410 or STAT 2430; CS 2100 and MATH 2522 or MATH 2544 recommended. Cross-listed with: STAT 3870. Catamount Core: QR.
CS 3880. Statistical Learning. 3 Credits.
Statistical learning methods and applications to modern problems in science, industry, and society. Topics include: linear model selection, cross-validation, lasso and ridge regression, tree-based methods, bagging and boosting, support vector machines, and unsupervised learning. Prerequisites: STAT 3210 or equivalent. Cross-listed with: STAT 3880. Catamount Core: QR.
CS 3920. Senior Seminar. 1 Credit.
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.
CS 3930. Computing Career Preparation. 1 Credit.
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.
CS 3990. Special Topics. 1-18 Credits.
See Schedule of Courses for specific titles. Subject will vary from year to year. May be repeated for credit.
CS 3991. Internship. 1-18 Credits.
On-site supervised work experience combined with a structured academic learning plan directed by a faculty member or a faculty-staff team in which a faculty member is the instructor of record, for which academic credit is awarded. Offered at department discretion.
CS 3993. Independent Study. 1-18 Credits.
A course which is tailored to fit the interests of a specific student, which occurs outside the traditional classroom/laboratory setting under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.
CS 3994. Teaching Assistantship. 1-3 Credits.
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.
CS 3995. Undergraduate Research. 1-18 Credits.
Undergraduate student work on individual or small team research projects under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.
CS 4990. Special Topics. 1-18 Credits.
See Schedule of Courses for specific titles.
CS 4996. Undergraduate Honors Thesis. 1-6 Credits.
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.