Computer Science Undergraduate Course Descriptions

The following are the course numbers, number of credits, course titles, and course descriptions for undergraduate courses offered through the Computer Science Department.

CS 1000-3. Computer Literacy.
The role of computers in society with an introduction to programming in basic. The student is introduced to the concepts and operations of a microcomputer including several typical software environments such as word processing, spread sheet accounting, and database systems. The history and impact of computing in society is covered. This is the most elementary course offered by the computer science department. This course is not for CS or engineering majors. Prer., High school algebra.

CS 1010-1 to 3. Topics in Computer Science.
Content will vary to reflect areas of current interest in computer science. As the course continually changes, students may take the course several times for elective credit. Prer., instructor consent.

CS 1020-3. Web Page Design for Non-Computer Science Majors.
An introduction to Web site design using Macromedia Dreamweaver; creating and editing graphics using Macromedia Fireworks; creating animation using Macromedia Flash; integration of graphics and video into Web pages; and, basic Web design concepts. Not for CS or engineering majors. Prer., Students should be familiar with basic computer concepts, including file operations and text editing.

CS 1030-1. Introduction to Microsoft Word.
Introduction to word processing and the specifics of using the Microsoft Word for Windows system. Students will learn to create, format, and edit documents using Word.

CS 1040-1. Introduction to Microsoft Excel.
Introduction to spreadsheets and the specifics of using the Microsoft Excel for Windows system. Students will learn to create, edit, and print spreadsheets using Excel.

CS 1050-1 to 3. Topics in Computer Science.
Content will vary to reflect areas of current interest in computer science. As the course continually changes, students may take the course several times for elective credit. Prer., Instructor consent.

CS 1060-1 to 3. Topics in Computer Science.
Content will vary to reflect areas of current interest in computer science. As the course continually changes, students may take the course several times for elective credit. Prer., Instructor consent.

CS 1070-3. Introduction to Programming in Visual BASIC for Non-Majors.
Introduction to using visual basic to design and implement programs that interface with their users through Microsoft Windows. Prer., High school algebra.

CS 1090-3. Introduction to Programming using MatLab.
Introduction to programming with an emphasis on structured programming techniques using MatLab as the learning environment. This course is designed to teach Mechanical and Aerospace Engineering students the fundamentals of computer programming.

CS 1100-3. Problem Solving through Game Creation.
An introductory course that combines problem-solving techniques with computer game design and implementation to introduce the student to basic gaming and computer science concepts. Students design, implement, and test computer games using Drag-and-drop tools game creation tools. A small amount of programming is required.

CS 1150-3. Principles of Computer Science.
Introduction to programming with emphasis on computer science concepts. Develops methods for computer problem solving. Develops proficiency for programming in a modern programming language, and introduces the concepts of abstraction in problem solving. Includes basic concepts of computer systems and environments including debuggers, editors, and file systems. Prer., High school algebra and familiarity with computer concepts including file operations and text editing.

CS 1300-3. Computational Linear Algebra.
Covers mathematical as well as computational aspects of Linear Algebra. The class will apply/explore these concepts: Vectors, Matrices, 2D, 3D, and ND Transforms and Graphics, Systems of Linear Equations, Eigenvalues/Eigenvectors, Numerical Stability, and Linear Filters/Predictors. Prer., A score of 20 or better on the Math ACT, or a score of 17 or better on the algebra diagnostic exam or successful completion of Math 090.

CS 1450-3. Data Structures and Algorithms.
Concepts of data type, data abstraction, and data structure. Internal representations of fundamental data types. Linear data structures: stack, queue. Linked data structures and dynamic data types. Search table data abstraction, linear search in arrays and lists, binary search in arrays and trees. Binary trees, non-binary trees, binary search trees. Prer., C S 1150 or equivalent.

CS 2010-1 to 3. Topics in Computer Science.
Content will vary to reflect the areas of current interest in computer science. As the courses continually change, students may take the course several times for elective credit. Prer., Consent of instructor.

CS 2030-1 to 3. Topics in Computer Science.
Content will vary to reflect the areas of current interest in computer science. As the courses continually change, students may take the course several times for elective credit. Prer., Consent of instructor.

CS 2050-1 to 3. Topics in Computer Science.
Content will vary to reflect the areas of current interest in computer science. As the courses continually change, students may take the course several times for elective credit. Prer., Consent of instructor.

CS 2060-3. Programming with C.
A first course in the C programming language for those who are proficient in some other high level language. Prer., CS 1150.

CS 2070-1 to 3. Topics in Computer Science.
Content will vary to reflect the areas of current interest in computer science. As the courses continually change, students may take the course several times for elective credit. Prer., Consent of instructor.

CS 2080-2. Programming with UNIX.
An introduction to the UNIX operating system with an emphasis on the development of C and command shell programs. Prer., CS 1450.

CS 2120-1 to 3. Topics in Computer Science.
Content will vary to reflect the areas of current interest in computer science. As the courses continually change, students may take the course several times for elective credit. Prer., Consent of instructor.

CS 2160-3. Computer Organization and Assembly Language Programming.
Provides an introduction to the concepts of computer architecture, functional logic, design and computer arithmetic. It presents material on the mechanics of information transfer and control within a computer system. Also included are: symbolic programming techniques, implementing high level control structures, addressing modes and their relation to arrays, subprograms, parameters, linkage to high level languages and the assembly process. Prer., CS 1450 and CS 2060.

CS 3010-3. Web Programming.
An introduction to the programming languages and technologies associated with the Web. Included are XHTML, cascading style sheets, JavaScript, dynamic XHTML documents, applets, XML, Perl and its use in CGI programming, Java Servlets and Web access to databases. Prer., CS 3160.

CS 3020-3. Advanced Object Technology Using C#/.NET.
C# class construction principles, delegates, threads, event handling, GUI components, observer pattern, standard collections, generic parameters, enumerators, custom components, UML representation, abstract classes, interfaces, object persistence, remoting, and refactoring. Prer., CS 1450.

CS 3030
-1 to 3. Selected Topics in Computer Science.
The content of these courses will vary from time to time and reflect the areas of current interest in Computer Science. As the courses continually change, students may take the course several times for technical elective credit. Prer., Instructor consent.

CS 3040-3. Advanced Object Technology using JAVA.
Understand advanced object-oriented concepts and implement software in JAVA. Topics include swing, beans, class construction, exception handling, threads, graphics, printing, cloning, serialization, collections, event-handling models, model-view-controller and reflection. Apply good OO principles by implementing mid-sized projects in JAVA. Prer., CS 1450.

CS 3050-1. Social and Ethical Implications of Computing.
This class will discuss selected topics in ethical, social, political, legal and economic aspects of the application of computers. Each student is expected to research one or more topics, actively participate in discussions, and give a presentation. Written papers may be required. Prer., CS 2080 or instructor consent.

CS 3060-3. Object-Oriented Programming Using C++.
The principal goals of this course are: 1) to learn the fundamentals of object-oriented programming, 2) to gain skill and proficiency in using the C++ programming language, 3) to exercise the C++ language in implementing a moderate sized software system designed with objects. Prer., CS 2060 and CS 2080.

CS 3160-3. Concepts of Programming Languages.
Evolution of the central concepts of programming languages, describing syntax and semantics, data types, abstract data types, control structures, subprograms, concurrency and exception handling. Prer., C S 2060, C S 2160, and either CS 3020 or CS 3060.

CS 3300-3. Software Engineering.
Software engineering methodologies. The software lifecycle. Emphasis on the design, development and implementation of a software system. A course project provides the student teams practical application of the software engineering techniques. Prer., CS 2080 and either CS 3020 or CS 3060.

CS 3350-3. Introduction to Game Design and Development.
Includes game mechanics, feedback systems, game programming fundamentals, game math and physics, artificial intelligence, 2-D and 3-D graphics and animation, and audio programming. Students complete a team project developing a complete game. Prer., CS 1450, CS 3060 and PES 1110.

CS 3910-3 System Administration and Security
Covers the installation and configuration of mainstream operating systems, important network services, disaster recovery procedures, ad techniques for ensuring the security of the system.  Prer., CS 2080

CS 4010-4090-1 to 3. Selected Topics in Computer Science.
The content of these courses will vary from time to time and reflect the areas of current interest in Computer Science. As the courses continually change, students may take the course several times for elective credit. Prer., Instructors consent.

CS 4100-3. Compiler Design I.
Underlying theory and design techniques for compilers. Lexical analysis, topdown and bottom-up parsing algorithms, runtime storage management, syntax directed translation schemes, intermediate code generation. Prer., CS 2160, CS 3160 and CS 4700/5700. Meets with CS 5100.

CS 4200-3. Computer Architecture I.
Course covers fundamentals of computer design, instruction set principles and examples, pipelining, advanced pipelining and instruction-level parallelism, memory-hierarchy design and survey of design issues in storage, interconnection network and multiprocessor systems. Prer., CS 2160. Meets with CS 5200.

CS 4220-3. Computer Networks.
Course focuses on the basic network and protocol concepts and principles with practical hands-on exercises on network management, network programming, and network planning through the use of industry simulators. Topics include: Internet protocols and routing, local area networks, basic TCP/IP programming, congestion control, packet switching and routing, quality-of-service, and network management. Prer., CS 2060 and MATH 2105.

CS 4360-1. Game Design and Development Capstone Project.
A Capstone Project course in which each individual student designs and develops a complete game on their own. Each student also develops the documentation associated with their game, including marketing materials and a user manual. Prer., CS 4780.

CS 4420-3. Database Systems I.
Course introduces general database concepts as well as database system technology. The course covers ER and R data models, R-algebra, SQL, data storage and indexing, query optimization, database design and security. Prer., CS 3300. Meets with CS 5420.

CS 4500-2. Operating Systems I.
Introduces concepts, terminology, and algorithms of operating systems. Describes semaphores, processes, virtual mappings, interrupts, resource allocation and management, protection, synchronization, scheduling, queuing and communication as applied to operating system design and implementation. Prer., CS 2060, CS 2080, and CS 4200/5200. Meets with CS 5500.

CS 4600-3. Numerical Computing.
Algorithms for the solution of nonlinear equations, interpolation and approximation, differentiation, integration, systems of linear equations, ordinary differential equations and least squares. Prer., CS 1450, MATH 2350 and MATH 3130. Meets with CS 5600.

CS 4700-3. Computability, Automata and Formal Languages.
Finite automata and regular expressions, context-free grammars, context-free languages, and pushdown automata, Turning machines, undecidability, the Chomsky hierarchy of formal languages, computational complexity and intractable problems. Prer., MATH 2150 and MATH 3130. Meets with CS 5700.

CS 4720-3. Design and Analysis of Algorithms.
Design methodologies; divide-and-conquer, exhaustive search, dynamic programming. Time and space complexity measures, analysis of algorithms. Survey of important algorithms for searching, sorting, graph manipulation. Tractability: class P and NP, NP complete problems. Prer., CS 1450 and MATH 2150. Meets with CS 5720.

CS 4780-3. Advanced 3-D Games and Digital Content Creation.
Populating virtual worlds with characters and objects. Concentrates on current technology and advanced topics using graphics and VR technology. Typical topics include graphics engines, landscape specializations, wrapping techniques, complex scenes, lighting, shadows, motion control, collisions, dynamics, image-based rendering, multi-player games, etc., plus advanced features from SIGGRAPH and others. Prer., C S 4800/5800 or instructor’s consent. Meets with CS 5780.

CS 4800-3. Computer Graphics.
Fundamental areas of modern raster computer graphics: hardware, software, data structures, mathematical modeling, user interface and manipulation of graphical objects. A subset of the two dimensional GKS is examined and implemented with emphasis placed upon segmented display files and instance modeling. Basic to all graphic programs written are the ergonomic requirements of the user. Required programs are in the areas of animation, paint systems, polygon filling and clipping, and curve generation. Prer., CS 1450, CS 2020, and MATH 3130. Meets with CS 5800

CS 4820-3. Functional and Logical Programming for Artificial Intelligence.
Course focuses on functional programming using LISP and logical programming using Prolog. Programming projects are geared towards various aspects of artificial intelligence. Prer., CS 3160 or consent of instructor.

CS 4850-3. Bioinformatics and Computational Biology.
Review of molecular and cell biology; bioinformatics databases; pairwise sequence alignment algorithms; Markov Chains, Hidden Markov Models; evolutionary models; Phylogenetic trees; gene recognition; protein structure prediction. Prer., MATH 3810, CS 4720, or instructor permission. Meets with CS 5850.