Computer Science Department

http://www.uvm.edu/~cems/cs/

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:

BS CS

The Bachelor of Science in Computer Science provides the most depth in computer science, mathematics and statistics, and natural science 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.

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.

BS DS

The Bachelor of Science, major in  Data Science, is a transdiscpilinary 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.

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

AMP

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.

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

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-requisities for the MS program in CS. Information about this program can be found on the Continuing Education Website.

Regulations

Students pursuing the Bachelor of Science in Computer Science and the Bachelor of Science degree with a majors in Computer Science & Information Systems 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. 

Computer Science Minor

Computer Science

Complex Systems and Data Science M.S.

Computer Science AMP

Computer Science M.S.

Computer Science Ph.D.

See the online Graduate Catalogue for more information.

Courses

CS 002. MS Office: Beyond the Basics. 0 or 3 Credits.

Word documents looking dull? Excel charts lacking something? PowerPoint slides fizzling? All this and more is covered. Learn more than just the basics.

CS 005. Introductory Special Topics. 1-3 Credits.

Prerequisite: Instructor permission. Hours variable. May not be taken for credit after any Computer Science course numbered CS 016 or higher.

CS 006. 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 166 or 266.

CS 008. Intro to Web Site Development. 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.

CS 014. Visual Basic Programming. 3 Credits.

Introduction to Microsoft's rapid development environment. Create playful and relevant Windows applications.

CS 020. Programming for Engineers. 0 or 3 Credits.

Introduction to computer programming principles using MATLAB, with applications chosen from civil, electrical, environmental, and mechanical engineering. Co-requisite: MATH 021. Cross-listed with: ENGR 020.

CS 021. Computer Programming I. 0 or 3 Credits.

Introduction to algorithmic problem solving and computer programming. Designed to provide a foundation for further studies in computer science.

CS 031. C Programming. 1-3 Credits.

Introduction to C programming for those already familiar with another programming language. Variable types, pointers, memory allocation, input/output, math, time, and other library calls. Prerequisite: CS 020 or CS 021.

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

CS 050. 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 110. Co-requisite: CS 021 or CS 110.

CS 064. 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 given for more than one of CS 064, MATH 052 or MATH 054. Prerequisites: CS 020 or CS 021; MATH 020 or MATH 021 or MATH 023.

CS 087. Introduction 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 087.

CS 090. 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 095. Special Topics. 1-18 Credits.

See Schedule of Courses for specific titles. Prerequisite: Instructor permission.

CS 106. Embedded Programming in C. 1-3 Credits.

Fundamental exercises in C programming for embedded systems (e.g., Arduino platform) including variable types, pointers, memory allocation, input/output, etc. (1st cr.); demonstration of advanced knowledge of these embedded systems concepts (2nd cr.); embedded systems project (3rd cr.). Prerequisites: CS 020 or CS 021. Cross-listed with: EE 106.

CS 110. Intermediate Programming. 0 or 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: One of CS 020 or CS 021 with a grade of C- or better.

CS 120. Advanced Programming. 3 Credits.

Build 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 110 with a grade of C- or better.

CS 121. Computer Organization. 0 or 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. Prerequisite: CS 110.

CS 124. Data Structures & 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 110; CS 064 or or MATH 052.

CS 125. Computability and 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 064 or MATH 052. Co-requisite: CS 124.

CS 128. Probability Models & Inference. 3 Credits.

Introduction to probability and statistics with computer science applications: probability spaces, discrete and continuous random variables, distributions, conditional probability, Markov chains, statistical estimation and regression. Prerequisites: CS 064 or MATH 052.

CS 142. Advanced Web Design. 0-3 Credits.

Advanced web site design, including structure, architecture, compliance, CSS, usability, etc., to help create a pleasing user experience. Prerequisite: CS 008.

CS 148. Database Design for the Web. 0 or 3 Credits.

Design and implementation of a relational database model using SQL and PHP. Typical project includes creation of ecommerce shopping site. Prerequisites: CS 008; CS 020 or CS 021.

CS 166. 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 266. Prerequisites: CS 008, CS 021.

CS 167. 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. No credit if taken after CS 266. Prerequisite: CS 166 or CS 266.

CS 189. CS for Geospatial Technologies. 0 or 3 Credits.

Introductory course providing hands-on experience with activities involving programming languages, platforms, and technologies in use by the GIS programmer/developer. Prerequisite: One of CS 020, CS 021, CE 010, GEOG 081, or NR 143.

CS 190. 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 191. 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 192. 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 195. Special Topics. 1-18 Credits.

See Schedule of Courses for specific titles. Prerequisite: Instructor permission.

CS 196. 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 198. 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 201. Operating Systems. 0 or 3 Credits.

Supervisory and control software for multiprogrammed computer systems. Processes synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, object-oriented systems, case studies. Prerequisites: CS 121 and CS 124.

CS 204. 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 124.

CS 205. Software Engineering. 3 Credits.

Treatment of software engineering problems and principles, including documentation, information hiding, and module interface specification syntax and semantics. Requires participation in a team project. Prerequisite: CS 124.

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

CS 222. 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 121.

CS 224. 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 124. Pre/co-requisites: Recommended: CS 125; STAT 143, STAT 151, or CS 128.

CS 225. Programming Languages. 3 Credits.

The principles of programming language design and fundamental implementation concepts. Syntax, semantics, and static program analysis for various paradigms. Programming language metatheory, including confluence and type safety. Stack-based implementation and memory management issues. Prerequisites: CS 124, CS 125.

CS 228. Human-Computer Interaction. 3 Credits.

The design, implementation, and evaluation of user interfaces for computers and other complex, electronic equipment. Includes a significant project. Pre/co-requisites: Programming experience and Junior standing or Instructor permission.

CS 231. Programming for Bioinformatics. 3 Credits.

Introductory course on computing (including scripting, database, and statistical analysis) for developing bioinformatics applications. Particular emphasis is given to comparative genomics and systems biology scenarios. Prerequisites: STAT 151, STAT 153 or Instructor permission. Cross-listed with: MMG 231.

CS 232. Methods in Bioinformatics. 3 Credits.

This course provides a methodological survey of bioinformatics. Particular emphasis is given to algorithms associated with sequence analysis, comparative genomics, structural biology, and systems biology. Prerequisites: STAT 151, STAT 153, or Instructor permission. Cross-listed with: MMG 232.

CS 243. 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 124 and CS 125.

CS 251. Artificial Intelligence. 3 Credits.

Introduction to methods for realizing intelligent behavior in computers. Knowledge representation, planning, and learning. Selected applications such as natural language understanding and vision. Prerequisites: CS 124; CS 128 or STAT 151 or STAT 143. Cross-listed with: CSYS 251.

CS 253. 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 064 or MATH 052; STAT 151 or STAT 143 or STAT 251; CS 110. Pre/Co-requisites: MATH 122 or MATH 124; CS 125.

CS 254. Machine Learning. 3 Credits.

Introduction to machine learning, including supervised and unsupervised learning algorithms, reinforcement learning, and computational learning theory. Prerequisites: CS 128 or STAT 151 or STAT 143; MATH 121; MATH 122 or MATH 124.

CS 256. Neural Computation. 3 Credits.

Introduction to artificial neural networks, their computational capabilities and limitations, and the algorithms used to train them. Statistical capacity, convergence theorems, backpropagation, reinforcement learning, generalization. Prerequisites: MATH 122 or MATH 124 or MATH 271; CS 128 or STAT 143 or STAT 151; CS 110. Cross-listed with: STAT 256, CSYS 256.

CS 260. Parallel Computing. 3 Credits.

Taxonomy of parallel computers, basic concepts for parallel computing, effectiveness and scalability, parallel algorithms for variety of problems, distributed memory and shared memory paradigms. Prerequisite: CS 124.

CS 265. Computer Networks. 3 Credits.

Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: local area networks; the Internet; network and world-wide-web application programming. Prerequisites: CS 110; CS 121; STAT 143.

CS 266. Network Security&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 124.

CS 274. Computer Graphics. 3 Credits.

Graphical representation of two- and three-dimensional objects on color raster displays. Line generation, region filling, geometric transformations, hidden line and surface removal, rendering techniques. Prerequisites: CS 104 or CS 124; MATH 122 or MATH 124 or MATH 271 recommended.

CS 275. Mobile Apps & Embedded Devices. 3 Credits.

A projects-based course focused on applications development on wireless and embedded platforms, including iOS, Arduino, and Linux-based devices. Emphasis on C programming and cyber-physical systems software. Prerequisite: CS 120, CS 124. Pre/co-requisites: Recommended: CS 148 or CS 204.

CS 283. Undergraduate Honors Thesis. 3 Credits.

See description of Honors Thesis Program in the College of EM section of this catalog.

CS 284. Undergraduate Honors Thesis. 3 Credits.

See description of Honors Thesis Program in the College of EM section of this catalog.

CS 287. Data Science I. 3 Credits.

Data harvesting, cleaning, and summarizing. Working with non-traditional, non-numeric data (social network, natural language textual data, etc.). Scientific visualization using static and interactive "infographics." A practical focus on real datasets, and developing good habits for rigorous and reproducible computational science. Prerequisites: CS 020 or CS 021; STAT 141 or STAT 143 or STAT 211. Pre/co-requisites: Recommended: CS 110; Math 122 or Math 124. Cross-listed with: STAT 287.

CS 290. 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 291. 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 292. 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 294. 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 295. Special Topic:Computer Science. 1-18 Credits.

See Schedule of Courses for specific titles. Subject will vary from year to year. May be repeated for credit with instructor permission.

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