Computer Science (CS)

CS F101      Computers and Society      (m)
3 Credits

Offered Fall, Spring and Summer

Computer literacy for everyone. Overview of computing machines and automatic data processing. Interaction between social institutions and automated decision-making. Introduction to business applications software and electronic mail. Some programming for understanding, not for skill development.

Prerequisites: Two years of high school mathematics, including at least one year of algebra.

Lecture + Lab + Other: 3 + 0 + 0

CS F103      Introduction to Computer Programming
3 Credits

Offered Fall and Spring

Computer programming for students without the background for CS F201. Concepts of object-oriented programming and algorithm design using the Java programming language.

Prerequisites: Math placement at the 100-level.

Lecture + Lab + Other: 3 + 0 + 0

CS F180      Introduction to Programming and Algorithmic Thinking
1 Credit

Offered As Demand Warrants

Introduction to fundamental concepts across different programming languages including: variables, looping, conditional statements, flow, maintainable code, searching and sorting algorithms. This course is designed as an advance layer over the materials and activities associated with the T3 Alliance grant funded program (T3.alliance.org).

Lecture + Lab + Other: 1 + 0 + 0

CS F201      Computer Science I
3 Credits

Offered Fall and Spring

The discipline of computer science including problem solving, algorithm development, good programming style, control flow, I/O and elementary data structures. Concepts implemented with extensive programming experience in C++, and a group programming project.

Prerequisites: One year high school level programming or CS F103; mathematics placement at the F200-level.

Lecture + Lab + Other: 3 + 0 + 0

CS F202      Computer Science II
3 Credits

Offered Fall and Spring

The discipline of computer science including classes, object-oriented programming, operators, RAII, inheritance, exceptions and generic programming with templates. Concepts implemented with extensive programming experience in C++ and a group programming project.

Prerequisites: CS F201.

Lecture + Lab + Other: 3 + 0 + 0

CS F301      Assembly Language Programming
3 Credits

Offered Fall

The low level structure of a modern computer: hardware instruction set architecture, registers, the call stack, pointers, the heap, the page table, and threads. Applications include performance and security.

Prerequisites: CS F201.

Lecture + Lab + Other: 3 + 0 + 0

CS F311      Data Structures and Algorithms
3 Credits

Offered Fall

Data structures and the algorithms for their manipulation. Algorithmic efficiency and asymptotic notation. Algorithms for searching and sorting. Abstract data types and container data structures: arrays, linked lists, stacks, queues, trees, tables, heaps, balanced search trees, hash tables.

Prerequisites: CS F202.

Lecture + Lab + Other: 3 + 0 + 0

CS F321      Operating Systems
3 Credits

Offered Spring

The software stack in a modern computer: thread, process, container, kernel, hypervisor and network. Enforcing access control and securing communication between these layers, and designing services to use them effectively.

Prerequisites: CS F301.

Lecture + Lab + Other: 3 + 0 + 0

CS F331      Programming Languages
3 Credits

Offered Spring

Syntax and semantics of widely differing programming languages. Syntax specification, lexical analysis, parsing and interpretation. Comparison of diverse languages such as Python, Haskell, Forth and Prolog.

Prerequisites: CS F311.

Lecture + Lab + Other: 3 + 0 + 0

CS F361      Systems Security and Administration
3 Credits

Offered As Demand Warrants

Advanced systems programming including privileged instructions and system services, authentication technologies, host-based and network-based security issues. Applications to asynchronous I/O, process control and communication, device drivers and file management.

Prerequisites: CS F301.

Lecture + Lab + Other: 3 + 0 + 0

CS F371      Computer Ethics and Technical Communication
3 Credits

Offered Fall

This course explores the social, legal and ethical issues aggravated, transformed or created by computer technology. Additional focus is on technical communication skills needed in the computer industry.

Prerequisites: WRTG F211X, WRTG F212X, WRTG F213X or WRTG F214X; COJO F131X or COJO F141X; CS F202.

Lecture + Lab + Other: 3 + 0 + 0

CS F372      Software Construction
3 Credits

Offered Spring

Methods for programming and construction of complete computer applications, including refractoring, performance measurement, process documentation, unit testing, version control, integrated development environments, debugging and debuggers, interpreting requirements, and design patterns.

Prerequisites: CS F311.

Lecture + Lab + Other: 3 + 0 + 0

CS F392      Seminar
1-6 Credits

Lecture + Lab + Other: 0 + 0 + 0

CS F405      Introduction to Artificial Intelligence
3 Credits

Offered Spring

Examine diverse branches of Al placing Al in larger context of computer science and software engineering. Knowledge representation formalism and search technology. Programming methodologies; procedural systems such as expert systems and blackboard systems and non-procedural systems such as neural networks. Software engineering aspects of problem selection, knowledge acquisition, verification and validation. Individual projects.

Prerequisites: CS F311.

Lecture + Lab + Other: 3 + 0 + 0

CS F411      Analysis of Algorithms
3 Credits

Offered Fall

Analysis of classic algorithms, their implementation and efficiency. Topics from combinatorics (sets, graphs), algebra (integer arithmetic, primes, polynomial arithmetic, GCD, Diophantine equations, encryption), systems (parsing searching, sorting) and theory (recursion, Turing machines). The complexity classes P, NP and NP complete.

Prerequisites: MATH F307, CS F311.

Lecture + Lab + Other: 3 + 0 + 0

CS F421      Distributed Operating Systems      (W)
3 Credits

Offered As Demand Warrants

Detailed level study of distributed operating system algorithms, functions and associated implementation. Distributed operating system tuning methods and security. Role of distributed operating systems in net-centric computing. Programming, documentation and evaluation of distributed operating system segments as projects.

Prerequisites: CS F321; WRTG F111X; WRTG F211X, WRTG F212X, WRTG F213X or WRTG F214X.

Lecture + Lab + Other: 3 + 0 + 0

CS F425      Database Systems
3 Credits

Offered Fall

Data independence, modeling, relationships and organization. Hierarchical, network and relational data models; canonical schema. Data description languages, SQL, query facilities, functional dependencies, normalization, data integrity and reliability. Review of current database software packages.

Prerequisites: CS F311; CS F321.

Lecture + Lab + Other: 3 + 0 + 0

CS F441      System Architecture
3 Credits

Offered Spring

Computer design fundamentals, performance and cost, pipelining, instruction-level parallelism, memory hierarchy design, storage systems, and vector processing.

Prerequisites: CS F321; EE F341.

Lecture + Lab + Other: 3 + 0 + 0

CS F442      Computer Communication and Networks
3 Credits

Offered As Demand Warrants

Study of computer networks using the ISO/OSI layered model as a framework. Design issues and trade-offs, protocols and selected standards. Emphasis on ISO/OSI Layers 1-4/(Physical, Data Link, Network and Transport Layers), plus medium access sublayers (LAN's, etc.).

Prerequisites: CS F321.

Lecture + Lab + Other: 3 + 0 + 0

CS F460      Introduction to Digital Forensics
3 Credits

Offered As Demand Warrants

Takes a hands-on approach to the forensics examination of computer technology. Focuses on the forensic process, methods, and tools utilized to collect and preserve and examine digital evidence. Course topics include: collection, preservation and examination of evidence from computers including file systems, email and malicious code.

Prerequisites: CS F321.

Lecture + Lab + Other: 3 + 0 + 0

CS F462      Intrusion Detection Systems
3 Credits

Offered As Demand Warrants

Focus on IDS theory and practice and its importance; the origin and resolution of common security threats and vulnerabilities; host and network approaches to IDS implementation; and the legal, ethical, and privacy issues associated with IDS use and policies.

Prerequisites: CS F361.

Lecture + Lab + Other: 3 + 0 + 0

CS F463      Cryptography and Data Security
3 Credits

Offered As Demand Warrants

Specialized study of cryptography and its application in securing data systems, with an emphasis on applied cryptography. Topics include history of cryptography, encryption, digital signatures, authentication, electronic commerce, key distribution and management, private and public key cryptography, and protocols.

Prerequisites: MATH F307; CS F311.

Lecture + Lab + Other: 3 + 0 + 0

CS F471      Senior Capstone I      (W)
3 Credits

Offered Fall

Introduction to software engineering and project management principles, techniques, methods and standards for software system development. Additional topics include technical communication, computer ethics and legal issues.

Prerequisites: CS major; senior standing; CS F311; CS F371.

Lecture + Lab + Other: 3 + 0 + 0

CS F472      Senior Capstone II      (O, W)
3 Credits

Offered Spring

Group projects in a real computer industry environment and produce appropriate documentation and reports. Nature, ethics and legal considerations of the computer science profession are discussed with an emphasis on ethics. Additional topics include project management, design methodologies, technical presentation, human-machine interface and programming team interactions.

Prerequisites: CS F372; CS F471.

Lecture + Lab + Other: 3 + 0 + 0

CS F480      Topics in Computer Science
3 Credits

Offered As Demand Warrants

Topics include, but are not limited to; computational linear algebra, cryptography, parallel algorithm development and analysis.

Special Notes: Course may be repeated when topics change.

Lecture + Lab + Other: 0 + 3 + 0

CS F484      Computer Graphics Fundamentals
3 Credits

Offered Fall

Creation of computer-generated images using 3D graphics hardware. Mathematics and data structures in 3D graphics. Sprites, Tiles, Typography, and Vector Graphics in 2D graphics. Color, lighting, textures, hidden surface removal. Loading and saving scene graphs; Using physically based and nonphotorealistic shading. Software design principles to create interactive applications.

Prerequisites: CS F202; MATH F253X.

Stacked with CS F684.

Lecture + Lab + Other: 3 + 0 + 0

CS F485      Computer Graphics Rendering
3 Credits

Offered As Demand Warrants

Designing graphics engines for realtime rendering of computer generated imagery; physically based approaches to shading and shadows; artistic approaches to shading and nonphotorealistic rendering; algorithms for rendering an image including ray tracing, deferred rendering, and global illumination; image space algorithms for simulation of camera effects.

Prerequisites: CS F202; MATH F253X.

Stacked with CS F685.

Lecture + Lab + Other: 3 + 0 + 0

CS F486      Computer Graphics Animation and Simulation
3 Credits

Offered As Demand Warrants

Creation of computer graphics animation and simulation of physically based phenomena; designing simulation systems for computer graphics applications; physically based phenomena using particle systems, fluid simulation, and rigid body dynamics; key frame animation, bones, and rigging; and other related topics.

Prerequisites: CS F202; MATH F253X; PHYS F212X.

Stacked with CS F686.

Lecture + Lab + Other: 3 + 0 + 0

CS F600      Professional Software Development
4 Credits

Offered Fall

Participate in a group project to explore the technical, social and ethical aspects of software development. Topics include: requirements engineering, enterprise-level data storage, software architecture, security, software testing, legal issues, computer ethics, risk management and project management.

Prerequisites: CS F472.

Lecture + Lab + Other: 4 + 0 + 0

CS F601      Algorithms, Architecture and Languages
4 Credits

Offered Spring

Current research on, and cross-cutting interrelationships between computer algorithms, machine architecture and languages. Covers asymptotic performance analysis including NP-completeness, modern parallel hardware including multicore, and grammars and parsing from regular expressions to BNF.

Prerequisites: CS F331; CS F411; CS F441 or EE F443.

Lecture + Lab + Other: 4 + 0 + 0

CS F605      Artificial Intelligence
3 Credits

Offered Spring

Study and writing of AI programs: expert systems, expert system shells, blackboard systems, neural networks. Representation of knowledge, pattern analysis, inference networks, neural network training. Study of software engineering aspects of AI software.

Prerequisites: Graduate standing or permission of CS graduate advisor.

Lecture + Lab + Other: 3 + 0 + 0

CS F611      Complexity of Algorithms
3 Credits

Offered As Demand Warrants

Theoretical analysis of various algorithms: topics include sorting, searching, selection, polynomial evaluation, NP completeness, decidability.

Prerequisites: CS F411.

Lecture + Lab + Other: 3 + 0 + 0

CS F621      Advanced Systems Programming
3 Credits

Offered As Demand Warrants

Multiprogramming and multiprocessing systems. File and program security. Scheduling optimization and system tuning, I/O processing, archiving and system recovery, and initialization. Study of current systems.

Prerequisites: CS F311 and CS F321.

Lecture + Lab + Other: 3 + 0 + 0

CS F631      Programming Language Implementation
3 Credits

Offered As Demand Warrants

Formal treatment of programming language translation and compiler design. Parsing context-free languages, translation specifications, machine independent code, NBF, scanners, symbol tables, parsers and recursive descent. Programming of compiler or interpreter segments as projects.

Prerequisites: CS F331.

Lecture + Lab + Other: 3 + 0 + 0

CS F641      Advanced Systems Architecture
3 Credits

Offered As Demand Warrants

A study of advanced single processor systems. Detailed study of multiprocessor architectures, such as vector architectures, massively parallel processors and shared-memory multi-processors.

Prerequisites: CS F441 or permission of Computer Science graduate advisor.

Lecture + Lab + Other: 3 + 0 + 0

CS F642      Advanced Computer Networks
3 Credits

Offered As Demand Warrants

A study of networks of interacting computers. The problems, rationales and possible solutions for both distributed processing and distributed databases will be examined. Major national and international protocols will be presented.

Prerequisites: Graduate standing or permission of Computer Science graduate advisor.

Lecture + Lab + Other: 3 + 0 + 0

CS F671      Advanced Software Engineering
3 Credits

Offered As Demand Warrants

Advanced software development as an engineering discipline. Includes investigation of current tools, standards, foundation and trends in software engineering from component-ware, software system composition, e-systems, software architecture and CASE tools.

Prerequisites: CS F471.

Lecture + Lab + Other: 3 + 0 + 0

CS F680      Topics in Computer Science
1-4 Credits

Offered As Demand Warrants

Example topics include, but are not limited to, software requirements engineering, cryptography, parallel algorithm development and analysis. May be repeated for credit with change of topic.

Prerequisites: Varies with each topic.

Recommended: Varies with each topic.

Lecture + Lab + Other: 1-4 + 0 + 0

CS F681      Topics in Computer Graphics
3 Credits

Offered Fall

Hardware, software and techniques used in computer graphics taken from topics such as refresh, storage, raster scan technology, volume rendering, particle systems, shading, image processing, computer aided design, video effects, animation and virtual environments.

Prerequisites: CS F202 and MATH F253X.

Lecture + Lab + Other: 3 + 0 + 0

CS F684      Computer Graphics Fundamentals
3 Credits

Offered Fall

Creation of computer-generated images using 3D graphics hardware. Mathematics and data structures in 3D graphics. Sprites, Tiles, Typography, and Vector Graphics in 2D graphics. Color, lighting, textures, hidden surface removal. Loading and saving scene graphs; Using physically based and nonphotorealistic shading. Software design principles to create interactive applications.

Prerequisites: CS F202; MATH F253X.

Stacked with CS F484.

Lecture + Lab + Other: 3 + 0 + 0

CS F685      Computer Graphics Rendering
3 Credits

Offered As Demand Warrants

Designing graphics engines for realtime rendering of computer generated imagery; physically based approaches to shading and shadows; artistic approaches to shading and nonphotorealistic rendering; algorithms for rendering an image including ray tracing, deferred rendering, and global illumination; image space algorithms for simulation of camera effects.

Prerequisites: CS F202; MATH F253X.

Stacked with CS F485.

Lecture + Lab + Other: 3 + 0 + 0

CS F686      Computer Graphics Animation and Simulation
3 Credits

Offered As Demand Warrants

Creation of computer graphics animation and simulation of physically based phenomena; designing simulation systems for computer graphics applications; physically based phenomena using particle systems, fluid simulation, and rigid body dynamics; key frame animation, bones, and rigging; and other related topics.

Prerequisites: CS F202 and PHYS F212X.

Stacked with CS F486.

Lecture + Lab + Other: 3 + 0 + 0

CS F690      Graduate Seminar and Project
3 Credits

Offered Fall

First semester of two-semester seminar in which students will work on and present the results of major programming or literature survey projects in computer science. Written and oral reports will be required.

Prerequisites: 12 credits in graduate computer science courses; or permission of Computer Science graduate advisor.

Lecture + Lab + Other: 3 + 0 + 0

CS F691      Graduate Seminar and Project
3 Credits

Offered Spring

Second semester of a two-semester seminar in which students will work on and present the results of major programming or literature survey projects in computer science. Written and oral reports will be required.

Prerequisites: CS F690; 12 credits in graduate computer science courses; or permission of Computer Science advisor.

Lecture + Lab + Other: 3 + 0 + 0

CS F692      Seminar
1-6 Credits

Lecture + Lab + Other: 1-6 + 0 + 0

CS F698      Non-thesis Research/Project
1-9 Credits

Lecture + Lab + Other: 0 + 0 + 0

CS F699      Thesis
1-9 Credits

Lecture + Lab + Other: 0 + 0 + 0