University of Vermont

Department of Computer Science

Courses

Term: Fall 2015

Subject: Computer Science

CS 008 - Intro to Web Site Development

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 020 - Programming for Engineers

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. Credit not given for both CS 016 and CS 020/ENGR 020.

CS 021 - Computer Programming I

Introduction to algorithmic problem solving. Designed to provide a foundation for further studies in computer science. Prerequisites: MATH 010 or a strong background in secondary school algebra and trigonometry.

CS 031 - C Programming

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. Prerequisites: One of CS 016, CS 020, CS 021 or equivalent.

CS 050 - Seminar for New CS Majors

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

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. Co-requisites: One semester of programming, MATH 020 or MATH 022.

CS 095 - Special Topics

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

CS 110 - Intermediate Programming

Intermediate programming concepts including common data structures, algorithms, style, design, documentation, testing and debugging techniques, and an introduction to object-oriented programming. Prerequisites: One of CS 016, CS 020, CS 021 or equivalent.

CS 121 - Computer Organization

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 026 or CS 110. No credit for both CS 101 and CS 121.

CS 124 - Data Structures & Algorithms

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 026 or CS 110, CS 064 or MATH 052 or MATH 054. No credit for both CS 104 and CS 124.

CS 125 - Computability and Complexity

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 148 - Database Design for the Web

Design and implementation of a relational database model using SQL and PHP. Typical project includes creation of ecommerce shopping site. Prerequisite: CS 008.

CS 201 - Operating Systems

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 101 or CS 121; CS 104 or CS 124.

CS 204 - Database Systems

Techniques for processing very large collections of data. Secondary storage. Database design and management. Query languages and optimization. Database recovery. Prerequisite: CS 104 or CS 124.

CS 228 - Human-Computer Interaction

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 243 - Theory of Computation

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, CS 125.

CS 251 - Artificial Intelligence

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 103 or CS 123; CS 104 or CS 124; STAT 153 or equivalent. Cross-listed with: CSYS 251.

CS 275 - Mobile Apps & Embedded Devices

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 124. Pre/Co-requisites: CS 148 or CS 204 (recommended but not required).

CS 283 - Undergraduate Honors Thesis

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

CS 284 - Undergraduate Honors Thesis

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

CS 287 - Data Science I

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; CS 110 and MATH 124 recommended. Cross-listed with: STAT 287.

CS 292 - Senior Seminar

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 295 - Special Topic:Computer Science

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

CS 302 - Modeling Complex Systems

Integrative breadth-first introduction to computational methods for modeling complex systems;numerical methods, cellular automata, agent-based computing, game theory, genetic algorithms, artificial neural networks, and complex networks. Pre/co-requisites: Computer programming in any language, calculus. (Linear algebra recommended). Cross-listed with: CSYS 302.

CS 381 - Seminar

Presentations by students, faculty, and guest speakers on advanced topics in Computer Science. May be repeated up to three times for credit.

CS 392 - Master's Project

Prerequisite: Department permission.