Computer Science  

CS 401 - Computer Applications
Credits: 4.00
Use of computers to manage and analyze information across a variety of settings and disciplines. Introduction to major categories of software for large and small computer systems and discussion of the computer's role in today's society. No prior computer experience required. Significant hands-on work in campus clusters required. Not open to students who have completed DCE 491 or 492. Not open to CS majors. CEPS students should check with their major department for approval.

CS 401H - Honors/Computer Applications
Credits: 4.00
See description for CS 401.

CS 402 - Survey of Computer Science
Credits: 4.00
Exploration of the core concepts of computer science, including computer architecture, operating systems, relationship between hardware and software, communications and networks, and data representation. Programming languages and concepts, algorithm analysis, database systems, graphics and ethics will also be discussed. Not open to CS majors.

CS 403 - Online Network Exploration
Credits: 4.00
Introductory course covering basic topics relating to the Internet. Subjects discussed include e-mail, newsgroups, mailing lists, file transfer, telnet, the World Wide Web, Web browsers, search engines, and hypertext markup language (HTML). A large portion of the course focuses on Web publishing. Security and privacy issues, and commerce and legal issues are also discussed. Students are expected to have no previous experience with HTML. They will acquire new skills as well as broad understanding of the technical possibilities of living and working in an online society and its implications.

CS 405 - Introduction to Applications Programming with Visual Basic
Credits: 4.00
Introduction to the concepts and techniques of microcomputer windows programming. Students use the Visual Basic language to develop modular, event-driven programs/applications. Topics include: forms, properties, controls, variables, decision structures, and built-in and user-defined functions and subroutines. CEPS students should check with their major department for approval. Not open to CS majors.

CS 407 - Introduction to Computer Programming with Java
Credits: 4.00
Introduction to the concepts and techniques of computer programming, including basic data structures such as lists, stacks, and queues. The topics include control structures, file manipulation, recursion, and an introduction to graphic user interface design. Introduces object-oriented design and analysis, including class definition and use, inheritance, and polymorphism. Good programming style is stressed. Significant out-of-class programming required. Not open to students who have had CS 410, 412, 415, or the equivalent.

CS 410 - Introduction to Scientific Programming
Credits: 4.00
Introduction to the concepts and techniques of computer programming. Particular emphasis on computer programming as a problem-solving technique in science and engineering applications. The C language is taught and used for assignments. Good programming style is stressed. Significant out-of-class programming required. Not open to students who have completed CS 407, 415, or the equivalent. Pre- or Coreq: MATH 425.

CS 415 - Introduction to Computer Science I
Credits: 4.00
Theory and practice of computer science. Algorithm development and analysis; data abstraction techniques; elementary data structures; dynamic memory manipulation; debugging; and program design issues. Computer systems and applications. Intended for CS majors.

CS 416 - Introduction to Computer Science II
Credits: 4.00
See description for CS 415.

CS 504 - Web Design and Development
Credits: 4.00
Advanced course covering topics related to the design and implementation of complex, interactive presentations for the World Wide Web. Students are expected to have a working knowledge of some programming language. Students will learn how to apply their knowledge of HTML in order to design more effective presentations and how to build upon this knowledge to utilize advanced Web development techniques such as cascading style sheets (CSS), dynamic HTML (DHTML), client-side scripting, and server-side programming. New and emerging Web-related technologies will also be discussed. Prereq: CS 403 and programming course, or permission of the instructor.

CS 505 - Database Programming
Credits: 4.00
Introduction to database programming in the microcomputer environment. Students use a procedural programming language such as Visual Basic to manipulate data managed by a database management system. Emphasis is on the relational database model. Topics include connections, queries (including use of SQL), relations, constraints, transaction processing, concurrency issues, exception handling, and report generation. Prereq: a programming course.

CS 506 - Intermediate Applications Programming with Visual Basic
Credits: 4.00
Introduction to advanced Visual Basic data structures, objects, and classes, focusing on the component Object Model (COM) and database objects. Topics include fundamentals of relational databases, VB data interface tools, and the SQL database language, as well as the manipulation of objects from other applications and the creation of programmer-defined classes and objects. Prereq: CS 405.

CS 508 - Introduction to Data Structures with C++
Credits: 4.00
Introduction to basic data structures including strings, stacks, queues, lists, files, and binary search trees; emphasis on abstract data type (ADT) design and programming techniques. Basic introduction to C++ including nonhierarchical classes, operator overloading, template functions, and template classes. (Not offered for credit if credits received for CS 416.) Prereq: CS 410 (or 407).

CS 509 - Network/System Administration
Credits: 4.00
Introduction to the central issues in administration of a networked computer system. Topics include the client-server model (including support of mail, FTP, Telnet, the Web), disk and file systems, backup and recovery, and security. Privacy and other legal/social issues will be discussed. Prereq: CS 402 and a programming course, or permission of the instructor.

CS 515 - Data Structures
Credits: 4.00
Review of basic data structures; advanced data structures such as graphs, B-trees, and AVL trees; abstract data structure design and programming techniques; use of data abstraction language. Introduction to algorithm analysis. Prereq: CS 416.

CS 516 - Introduction to Software Design and Development
Credits: 4.00
Principles of problem analysis and solution design applied to the development cycle of a software system (i.e., from system requirements specifications to design, implementation, and system test). Experience in understanding and debugging exisiting software systems. Prereq: CS 515.

CS 611 - Assembly Language Programming and Machine Organization
Credits: 4.00
Assembly language programming and machine organization: program and data representation; registers, instructions, and addressing modes; assemblers and linkers. Impact of hardware on soft-ware and software on hardware. Historical perspectives. Prereq: CS 515.

CS 620 - Operating System Fundamentals
Credits: 4.00
Introduction to operating system concepts and design. Job, process, and resource management; scheduling; file systems; interprocess communication. Prereq: CS 515 and CS 611 or ECE 612.

CS #658 - Analysis of Algorithms
Credits: 4.00
Introduction to use of basic mathematics in design and analysis of computer algorithms. Topics include O-notation, divide and conquer, the greedy method, dynamic programming, and NP-completeness. Prereq: MATH 531 and 532; CS 515.

CS 659 - Introduction to the Theory of Computation
Credits: 4.00
Review of sets, relations, and languages. Induction and diagonalization. Finite automata, context-free languages, pushdown automata. Basic complexity theory. Prereq: MATH 531 and 532; CS 515.

CS 671 - Programming Language Concepts and Features
Credits: 4.00
Explores the main features of modern, high-level, general purpose programming languages from the user (programmer) point of view. Provides students with an opportunity to use nonimperative programming paradigms, such as object-oriented, functional, and logical, and to learn how specific features of such languages can be used efficiently in solving programming problems.

CS 696 - Independent Study
Credits: 1.00 to 6.00
Individual projects developed and conducted under the supervision of a faculty member. Prereq: permission of faculty supervisor and department chairperson. May be repeated for credit.

CS 696W - Independent Study
Credits: 3.00 to 6.00
See description for CS 696. Writing intensive.

CS 712 - Compiler Design
Credits: 4.00
Formal languages and formal techniques for syntax analysis and parsing; organization of the compiler and its data structures; problems presented by error recovery and code generation. Classical topdown and bottom-up techniques currently in wide-spread use, general discussion of LL(k) and LR(k) parsers; automatic methods of compiler generation and compiler compilers. Students required to define a simple, nontrivial programming language and to design and implement its compiler. Pre- or Coreq: CS 671.

CS #718 - Software Engineering
Credits: 4.00
Design approaches, implementation methodologies, and management techniques required to develop large, reliable software systems, including applications-oriented systems. Team programming projects. Prereq: CS 515 or permission.

CS 719 - Object-Oriented Methodology
Credits: 4.00
Object-oriented system design and programming. Languages for object-oriented programming. Prereq: CS 671 or permission. Writing intensive.

CS 720 - Operating System Programming
Credits: 4.00
Detailed discussion of operating system concepts and features. Practical examples and exercises that utilize advanced operating system features, including interprocess communication, synchronization, client-server communication, shared memory, threads, remote procedure calls, and device-level I/O. Discussion of POSIX 1003.1 Part I Standards. Prereq: CS 620.

CS 721 - Operating System Kernel Design
Credits: 4.00
Design and implementation of an operating system kernel, using LINUX as an example. Detailed discussion of the data structures and algorithms used in the kernel to handle interrupts, schedule processes, manage memory, access files, deal with network protocols, and perform device-level I/O. Course is project-oriented, and requires the student to make modifications and additions to the LINUX kernel. Prereq: CS 720 or permission.

CS #722 - Advanced Systems Programming
Credits: 4.00
Topics in systems programming. Organization and implementation of typical POSIX 1003.2 utilities and tools. Emphasis on file handling, text processing, pattern matching, and portability. Prereq: CS 620.

CS 724 - Distributed Operating Systems
Credits: 4.00
Fundamental concepts, algorithms, and design principles that form the basis of distributed and multiprocessor operating systems. Architectural overview, design, and implementation methodology of several real distributed systems. Prereq: CS 620.

CS 725 - Computer Networks
Credits: 4.00
Introduction to local, metropolitan, and wide area networks using the standard OSI Reference Model as a framework. Introduction to the Internet protocol suite and to network tools and programming. Discussion of various networking technologies. Prereq: CS 620.

CS #727 - Computer Communications Software Design
Credits: 4.00
Telecommunications software; error detection algorithms; asynchronous and synchronous communications software; network architectures; protocol definition and implementation; links through a local area network; timing considerations. Selected communications software will be implemented. Prereq: CS 620.

CS 730 - Introduction to Artificial Intelligence
Credits: 4.00
In-depth introduction to artifical intelligence, concentrating on aspects of intelligent problem-solving. Topics include situated agents, advanced search techniques, knowledge representation, logical reasoning techniques, reasoning under uncertainty, advanced planning and control, and learning. Prereq: CS 671.

CS 735 - Introduction to Parallel and Distributed Programming
Credits: 4.00
Programming with multiple processes and threads on distributed and parallel computer systems. Introduces programming tools and techniques for building applications on such platforms. Course requirements consist primarily of programming assignments. Prereq: CS 620, 611 or ECE 612; or permission. Writing intensive.

CS 745 - Formal Specifications and Verification of Software Systems
Credits: 4.00
Mathematical reasoning can be applied to study the behavior of software systems, an approach that is particularly relevant to safety critical systems. This can be achieved through the description of those systems along with their properties in formally defined, logically based languages. This course introduces techniques relevant to the application of formal specification and verification methods, including formal logic and proof techniques related to program correctness. Prereq: CS 515, MATH 531, 532.

CS #746 - Introduction to Programming Semantics
Credits: 4.00
Informal, nonmathematical introduction to descriptive techniques of denotational semantics. Provides framework needed to formally describe programming languages such as PASCAL. No previous knowledge of the theory of computation or of any particular programming language is assumed. Prereq: CS seniors only or instructor's permission.

CS 760 - Introduction to Human-Computer Interaction
Credits: 4.00
Human-computer interaction is a discipline concerned with the design, evaluation, and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. Prereq: CS 620. Writing intensive.

CS 765 - Introduction to Computational Linguistics
Credits: 4.00
Introduction to computational analysis of natural language with a focus on semantic representations and the resolution of ambiguity. Provides an elementary working knowledge of linguistic and artificial intelligence analysis methods as motivated by examples of potential input texts. Topics include parsing, formal grammars, representation of knowledge and memory, inference, and interpretation of nonliteral language. Prereq: elementary knowledge of LISP or instructor's permission. Writing intensive.

CS 767 - Interactive Data Visualization
Credits: 4.00
Detailed discussion of how an understanding of human perception can help us design better interactive displays of data. Topics include: color, space perception, object perception and interactive techniques. Students write interactive programs, give presentations and undertake a project designing and evaluating a novel display technique. Prereq: instructor's permission.

CS 770 - Computer Graphics
Credits: 4.00
Input-output and representation of pictures from hardware and software points of view; interactive techniques and their applications; three-dimensional image synthesis techniques and their applications; three-dimensional image synthesis techniques. Prereq: CS 515.

CS 770W - Computer Graphics
Credits: 4.00
See description for CS 770. Writing intensive.

CS 775 - Database Systems
Credits: 4.00
Database analysis, design, and implementation. Focus on the relational model. Data description and manipulation languages, schema design and normalization, file and index organizations, data integrity and reliability. Usage of selected DBMS. Prereq: CS 515, MATH 531.

CS 780 - Topics
Credits: 4.00
Material not normally covered in regular course offerings. May be repeated for credit.