CS 101 COMPUTERS: APPLICATIONS AND IMPLICATIONS (4)
The varieties of computer hardware and software. The effects, positive and negative, of computers on human lives. Ethical implications of information technology. Hands-on experience with a variety of computer applications. Lec/lab.
|
CS 151 INTRODUCTION TO PROGRAMMING I WITH EMBEDDED CONTROL LAB (4)
Thorough treatment of the basic elements of C, bitwise operations, flow of control, input/output, functions, arrays, strings, and structures. Lec/lab. CROSSLISTED as ECE 151.
PREREQS:
(MTH 111 [C] or MTH 112 [C] or (MTH 251 [C] or MTH 251H [C] ) ) or Placement Test MPT(23)
|
CS 160 COMPUTER SCIENCE ORIENTATION (3)
Introduction to the computer science field and profession. Team problem solving. Introduction to writing computer programs. Lec/lab.
PREREQS:
Wireless laptop required.
|
CS 160H COMPUTER SCIENCE ORIENTATION (3)
Introduction to the computer science field and profession. Team problem solving. Introduction to writing computer programs. Lec/lab.
PREREQS:
Wireless laptop required. Honors College approval required.
|
CS 161 INTRODUCTION TO COMPUTER SCIENCE I (4)
Overview of fundamental concepts of computer science. Introduction to problem solving, software engineering, and object-oriented programming. Includes algorithm design and program development. Lec/lab/rec.
PREREQS:
MTH 112* [C] or Placement Test MPT(33) or Placement Test MPAL(061)
and
for CS Double Degree students: BA/BS and (MTH 111 or MPT>=24 or MPAL>=061)
|
CS 162 INTRODUCTION TO COMPUTER SCIENCE II (4)
Basic data structures. Computer programming techniques and application of software engineering principles. Introduction to analysis of programs. Lec/lab/rec.
PREREQS:
CS 161 [C] or EECS 161 [C]
|
CS 175 COMMUNICATIONS SECURITY AND SOCIAL MOVEMENTS (3)
Equipping students with the theory and practice of communications security, this course explores how social movements can remain effective in the context of mass surveillance and state repression. Lec/rec. (Bacc Core Course)
PREREQS:
Wireless laptop required.
|
CS 195 WEBSITE DESIGN (4)
How to design and publish a static website using an existing publishing platform: Techniques and tools for designing and publishing on the World Wide Web; hypertext and HTMTL; site and page design; media integration; issues raised by Internet publishing.
|
CS 199 SPECIAL TOPICS/COMPUTER SCIENCE (1-16)
This course is repeatable for a maximum of 16 credits.
|
CS 201 COMPUTER PROGRAMMING FOR NON-CS MAJORS (3)
Covers a variety of fundamental topics in computer programming relevant to anyone who wants to write or work with computer code in their work or studies. Teaches basic computational thinking and programming skills which will allow students to solve a variety of real-world problems. In addition, students will learn more advanced topics such as how some basic algorithms work and can be written in computer code.
PREREQS:
This course may not be used to count towards the CS major or minor.
|
CS 261 DATA STRUCTURES (4)
Abstract data types, dynamic arrays, linked lists, trees and graphs, binary search trees, hash tables, storage management, complexity analysis of data structures. Lec/rec.
PREREQS:
(CS 162 [C] or CS 165 [C] ) and (CS 225 [C] or MTH 231 [C] )
|
CS 262 PROGRAMMING PROJECTS IN C++ (4)
Learning a second computer programming language. Elements of C++. Object-oriented programming. Experience team work on a large programming project.
PREREQS:
CS 261 [C]
|
CS 271 COMPUTER ARCHITECTURE AND ASSEMBLY LANGUAGE (4)
Introduction to functional organization and operation of digital computers. Coverage of assembly language; addressing, stacks, argument passing, arithmetic operations, decisions, macros, modularization, linkers and debuggers.
PREREQS:
(CS 151 [C] or CS 161 [C] or CS 165 [C] or ECE 151 [C] )
|
CS 290 WEB DEVELOPMENT (4)
How to design and implement a multi-tier application using web technologies: Creation of extensive custom client- and server-side code, consistent with achieving a high-quality software architecture.
PREREQS:
CS 162 [C] or CS 165 [C]
|
CS 295 WEBSITE MANAGEMENT (4)
How to create and promote a dynamic website using existing frameworks/libraries: Designing, developing, publishing, maintaining, and marketing dynamic websites; web security and privacy issues; emerging web technologies; running a website marketing campaign.
PREREQS:
CS 195 [C]
and
/or equivalent (i.e., basic HTML and CSS)
|
CS 312 SYSTEM ADMINISTRATION (4)
Introduction to system administration. Network administration and routing. Security issues. Computer, server, and network hardware. Lec/lab.
PREREQS:
(CS 311 [C] or CS 344 [C] ) and CS 372 [C]
and
/or instructor consent.
|
CS 321 INTRODUCTION TO THEORY OF COMPUTATION (3)
Survey of models of computation including finite automata, formal grammars, and Turing machines.
PREREQS:
CS 261 [C] and (CS 225 [C] or MTH 231 [C] )
|
CS 321H INTRODUCTION TO THEORY OF COMPUTATION (3)
Survey of models of computation including finite automata, formal grammars, and Turing machines.
PREREQS:
CS 261 [C] and (CS 225 [C] or MTH 231 [C] )
and
Honors College approval required.
|
CS 325 ANALYSIS OF ALGORITHMS (4)
Recurrence relations, combinatorics, recursive algorithms, proofs of correctness.
PREREQS:
CS 261 [C] and (CS 225 [C] or MTH 231 [C] )
|
CS 325H ANALYSIS OF ALGORITHMS (4)
Recurrence relations, combinatorics, recursive algorithms, proofs of correctness.
PREREQS:
CS 261 [C] and (CS 225 [C] or MTH 231 [C] )
and
Honors College approval required.
|
CS 331 INTRODUCTION TO ARTIFICIAL INTELLIGENCE (4)
Fundamental concepts in artificial intelligence using the unifying theme of an intelligent agent. Topics include agent architectures, search, games, logic and reasoning, and Bayesian networks.
PREREQS:
(CS 325 [C] or CS 325H [C] )
|
CS 340 INTRODUCTION TO DATABASES (4)
Design and implementation of relational databases, including data modeling with ER or UML, diagrams, relational schema, SQL queries, relational algebra, user interfaces, and administration.
PREREQS:
CS 290 [C]
|
CS 344 OPERATING SYSTEMS I (4)
Introduction to operating systems using UNIX as the case study. System calls and utilities, fundamentals of processes and interprocess communication.
PREREQS:
CS 261 [C] and (CS 271 [C] or ECE 271 [C] )
and
experience programming in the C language.
|
CS 352 INTRODUCTION TO USABILITY ENGINEERING (4)
Basic principles of usability engineering methods for the design and evaluation of software systems. Includes the study of human-machine interactions, user interface characteristics and design strategies, software evaluation methods, and related guidelines and standards.
PREREQS:
(CS 151 [C] or CS 161 [C] or CS 165 [C] or CS 295 [C] or ECE 151 [C] )
|
CS 361 SOFTWARE ENGINEERING I (4)
Introduction to the "front end" of the software engineering lifecycle; requirements analysis and specification; design techniques; project management.
PREREQS:
CS 261 [C]
|
CS 362 SOFTWARE ENGINEERING II (4)
Introduction to the "back end" of the software engineering lifecycle implementation; verification and validation; debugging; maintenance.
PREREQS:
CS 261 [C]
and
Experience with object-oriented programming and data structures (e.g., CS 161, CS 162, CS 261). CS 361 is recommended but not required.
|
CS 370 INTRODUCTION TO SECURITY (4)
Introductory course on computer security with the objective to introduce concepts and principles of computer systems security. Notions of security, basic crytographic primitives and their application, basics of authentication and access control, basics of key-management, basics of malware and software security.
PREREQS:
CS 344* [C]
|
CS 372 INTRODUCTION TO COMPUTER NETWORKS (4)
Computer network principles, fundamental networking concepts, packet-switching and circuit switching, TCP/IP protocol layers, reliable data transfer, congestion control, flow control, packet forwarding and routing, MAC addressing, multiple access techniques. Lec. CROSSLISTED as ECE 372.
PREREQS:
CS 261 [C] and (ECE 271 [C] or CS 271 [C] )
and
C programming and Unix familiarity.
|
CS 373 DEFENSE AGAINST THE DARK ARTS (4)
Introduction to the current state of the art in anti-malware, computer forensics, and networking, messaging, and web security. Broad introduction to the field of computer security.
PREREQS:
CS 344 [C] and CS 340 [C] and CS 372 [C]
|
CS 381 PROGRAMMING LANGUAGE FUNDAMENTALS (4)
An introduction to the concepts found in a variety of programming languages. Programming languages as tools for problem solving. A brief introduction to languages from a number of different paradigms.
PREREQS:
CS 261 [C] and (CS 225 [C] or MTH 231 [C] )
|
CS 391 SOCIAL AND ETHICAL ISSUES IN COMPUTER SCIENCE (3)
In-depth exploration of the social, psychological, political, and ethical issues surrounding the computer industry and the evolving information society. (Bacc Core Course)
PREREQS:
CS 101 or computer literacy.
|
CS 395 WEBSITE MULTIMEDIA (4)
How to create and deploy interactive digital multimedia through static websites: Technological, aesthetic, and pedagogical issues of communication using interactive multimedia and hypermedia; techniques for authoring interactive multimedia projects using a variety of digital media roots.
PREREQS:
CS 195 [C] or (ART 120 [C] and (CS 162 [C] or CS 165 [C] ) )
|
CS 401 RESEARCH (1-16)
Graded P/N.
This course is repeatable for a maximum of 16 credits.
PREREQS:
Departmental approval required.
|
CS 403 THESIS (1-16)
This course is repeatable for a maximum of 16 credits.
PREREQS:
Departmental approval required.
|
CS 405 READING AND CONFERENCE (1-16)
This course is repeatable for a maximum of 16 credits.
PREREQS:
Departmental approval required.
|
CS 406 PROJECTS (1-16)
This course is repeatable for a maximum of 16 credits.
PREREQS:
Departmental approval required.
|
CS 407 SEMINAR (1-16)
Graded P/N.
This course is repeatable for a maximum of 16 credits.
|
CS 407H SEMINAR (1-16)
Graded P/N.
This course is repeatable for a maximum of 16 credits.
PREREQS:
Honors College approval required.
|
CS 410 OCCUPATIONAL INTERNSHIP (1-16)
Graded P/N.
This course is repeatable for a maximum of 16 credits.
PREREQS:
Departmental approval required.
|
CS 419 SELECTED TOPICS IN COMPUTER SCIENCE (0-5)
Topics of special and current interest not covered in other courses.
This course is repeatable for a maximum of 99 credits.
PREREQS:
Varies by class offering, senior standing in computer science.
|
CS 419H SELECTED TOPICS IN COMPUTER SCIENCE (1-5)
Topics of special and current interest not covered in other courses.
This course is repeatable for a maximum of 99 credits.
PREREQS:
Varies by class offering, senior standing in computer science. Honors College approval required.
|
CS 420 GRAPH THEORY WITH APPLICATIONS TO COMPUTER SCIENCE (3)
Directed and undirected graphs; paths, circuits, trees, coloring, planar graphs, partitioning; computer representation of graphs and graph algorithms; applications in software complexity metrics, program testing, and compiling.
PREREQS:
(CS 325 [C] or CS 325H [C] )
|
CS 427 CRYPTOGRAPHY (4)
Introduction to the theory and practice of modern cryptography. Fundamental primitives including pseudorandom generators, block ciphers, hash functions. Symmetric-key cryptography for privacy and authenticity. Public-key cryptography based on number-theoretic problems.
PREREQS:
CS 261 [C] or MTH 355 [C]
|
CS 434 MACHINE LEARNING AND DATA MINING (4)
Introduction to machine learning and data mining algorithms (supervised learning, unsupervised learning, and reinforcement learning) tools that are widely employed in industrial and research settings.
PREREQS:
(CS 325 [C] or CS 325H [C] )
|
CS 440 DATABASE MANAGEMENT SYSTEMS (4)
Relational database design, normalization, file structures, disk storage, query processing and optimization, team development of database applications.
PREREQS:
CS 261 [C] and (CS 275 [C] or CS 340 [C] )
|
CS 444 OPERATING SYSTEMS II (4)
Principles of computer operating systems: concurrent processes, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking. Lec/rec.
PREREQS:
(CS 311 [C] or CS 344 [C] ) and (CS 271 [C] or ECE 375 [C] )
|
CS 446 NETWORKS IN COMPUTATIONAL BIOLOGY (3)
An introduction to biological networks and computational methods for their analysis, inference, and functional modeling. Various network centralities, topological measures, clustering algorithms, and probabilistic annotation models are introduced in the context of protein interaction, gene regulatory, and metabolic networks. The course also surveys bioinformatics methods for data-driven inference of network structure.
PREREQS:
CS 261 [C]
and
CS 325* (recommended) or by instructor permission
|
CS 450 INTRODUCTION TO COMPUTER GRAPHICS (4)
2-D and 3-D graphics APIs. Modeling transformations. Viewing specification and transformations. Projections. Shading. Texture mapping. Traditional animation concepts. 3-D production pipeline. Keyframing and kinematics. Procedural animation.
PREREQS:
(CS 261 [C] and (MTH 306 [C] or MTH 306H [C] or MTH 341 [C] ) )
|
CS 453 SCIENTIFIC VISUALIZATION (4)
Applies 3D computer graphics methods to visually understand scientific and engineering data. Methods include hyperbolic projections; mapping scalar values to color spaces; data visualization using range sliders; scalar visualization (point clouds, cutting planes, contour plots, isosurfaces); vector visualization (arrow clouds, particle advection, streamlines); terrain visualization; Delauney triangulation; and volume visualization.
PREREQS:
Prior experience with Unix or Windows, programming experience.
|
CS 457 COMPUTER GRAPHICS SHADERS (4)
Theoretical and practical treatment of computer graphics shaders, including both RenderMan and GPU shaders. Programming in both RenderMan and OpenGL shading languages.
PREREQS:
Previous graphics pipeline programming experience.
|
CS 458 INTRODUCTION TO INFORMATION VISUALIZATION (4)
Tools and techniques for designing, developing, and deploying interactive visualizations of abstract data sources. Discusses techniques based on principles from design, cognitive science, and perceptual psychology. Topics include 1D, 2D, 3D, multivariate representations, time-series, graphs and trees, text and documents, and interaction techniques.
PREREQS:
CS 361 [C]
and
junior standing or above.
|
CS 461 SENIOR SOFTWARE ENGINEERING PROJECT I (3)
Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery. Three-term sequence required. This course fulfills the WIC requirement for computer science majors. (Writing Intensive Courses).
PREREQS:
CS 361 [C]
and
senior standing
|
CS 462 SENIOR SOFTWARE ENGINEERING PROJECT II (3)
Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery. Three-term sequence required. (Writing Intensive Courses)
PREREQS:
(CS 362 [C] and CS 461 [C] )
and
senior standing
|
CS 463 SENIOR SOFTWARE ENGINEERING PROJECT (2)
Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery. Three-term sequence required.
PREREQS:
CS 462 [C]
|
CS 464 OPEN SOURCE SOFTWARE (4)
Provides a theoretical foundation of the history, key concepts, technologies, and practices associated with modern Free and Open Source Software (FOSS) projects, and gives students an opportunity to explore and make contributions to FOSS projects with some mentoring and guidance.
PREREQS:
CS 261 [C] or CS 361 [C]
|
CS 468 INCLUSIVE DESIGN (HCI) (4)
Inclusive design is designing software that works for a wide variety of differently abled customers. Teaches the skills needed to design inclusively without having to have a separate design for each differently abled customer.
PREREQS:
CS 352 [C]
and
/or CS 565 [C]
|
CS 472 COMPUTER ARCHITECTURE (4)
Computer architecture using processors, memories, and I/O devices as building blocks. Issues involved in the design of instruction set architecture, processor, pipelining and memory organization. Design philosophies and trade-offs involved in Reduced Instruction Set Computer (RISC) architectures. Lec/lab. CROSSLISTED as ECE 472/ECE 572.
PREREQS:
ECE 375 [C]
|
CS 475 INTRODUCTION TO PARALLEL PROGRAMMING (4)
Theoretical and practical survey of parallel programming, including a discussion of parallel architectures, parallel programming paradigms, and parallel algorithms. Programming one or more parallel computers in a higher-level parallel language.
PREREQS:
(CS 325 [C] or CS 325H [C] )
|
CS 476 ADVANCED COMPUTER NETWORKING (4)
Advanced networking concepts: source/channel coding, queuing theory, router design, network architectures (Intserv, DiffServ, MPLS), multimedia protocols (TFRC, RTP), overlay networks, and wireless standards (Bluetooth 802.11b, 3/4G). CROSSLISTED as ECE 476/ECE 576.
PREREQS:
(CS 372 [C] or ECE 372 [C] ) and (ECE 353 [C] or ST 314 [C] or ST 314H [C] )
|
CS 478 NETWORK SECURITY (4)
Basic concepts and techniques in network security, risks and vulnerabilities, applied cryptography and various network security protocols. Coverage of high-level concepts such as authentication, confidentiality, integrity, and availability applied to networking systems. Fundamental techniques including authentication protocols, group key establishment and management, trusted intermediaries, public key infrastructures, SSL/TLS, IPSec, firewalls and intrusion detection CROSSLISTED as ECE 478.
PREREQS:
(CS 372 [C] or ECE 372 [C] )
and
recommended prerequisite: CS 370, Introduction to Security
|
CS 480 TRANSLATORS (4)
An introduction to compilers; attribute grammars, syntax-directed translation, lex, yacc, LR(1) parsers, symbol tables, semantic analysis, and peep-hole optimization.
PREREQS:
(CS 344 [C] or CS 311 [C] ) and CS 321 [C]
|
CS 491 COMPUTER SCIENCE SKILLS FOR SIMULATION AND GAME PROGRAMMING (4)
Game and simulation development is very much a data and math-intensive activity. A certain number of actions must be produced, and producing them by hand is hard. This is a middleware CS course that fills in many of the missing pieces for those wanting to enter the simulation and game development worlds in a software tool-building capacity.
PREREQS:
CS 261 [C] and (CS 225 [C] or MTH 231 [C] ) and MTH 252 [C]
|
CS 492 MOBILE SOFTWARE DEVELOPMENT (4)
Introduction to concepts and techniques for developing mobile applications. Students will become familiar with modern mobile structure, implementation, development tools, and workflow.
PREREQS:
CS 344 [C]
|
CS 493 CLOUD APPLICATION DEVELOPMENT (4)
Covers developing RESTful cloud services, an approach based on representational state transfer technology, an architectural style and approach to communications used in modern cloud services development.
PREREQS:
CS 290 [C] and CS 340 [C] and CS 372 [C]
|
CS 495 INTERACTIVE MULTIMEDIA PROJECTS (4)
Students apply principles and procedures of digital art, design, communication, and software authoring while working on large integrated media projects.
PREREQS:
CS 395
|
CS 496 MOBILE AND CLOUD SOFTWARE DEVELOPMENT (4)
Introduction to the concepts and techniques for developing mobile and cloud applications.
PREREQS:
CS 344 [C] or CS 311 [C]
and
students need a working knowledge of at least one operating system in order to be successful in developing mobile and cloud software.
|
CS 499 SPECIAL TOPICS (1-16)
This course is repeatable for a maximum of 16 credits.
|