Computer Science  

CS 400 - Exploring Computer Science
Credits: 2.00
A gentle introduction to computer science, focusing on the Internet. Students are introduced to Web design, HTML authoring, and JavaScript programming. In addition, the field of computer science is surveyed. Ideal for students who want to explore what computer science is all about. Laboratory sessions provide hands-on experience. No previous experience with computers is required.

CS 401 - Computer Applications
Credits: 4.00
Use of computers to manage and analyze information across a variety of settings and disciplines. Introduces major categories of software for large and small computer systems and discusses 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
Explores 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. No credit if credit earned for CIS 405

CS 405 - Introduction to Applications Programming with Visual Basic
Credits: 4.00
Introduces 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
Introduces 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
Introduces 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 502 - Intermediate Web Design
Credits: 4.00
An intermediate level exploration of the theory and practice of Web design. Students learn the fundamentals of design theory applicable to the World Wide Web and examine tools and techniques for applying that knowledge to their projects. Additional topics inlcude information architecture, usability, accessibility, optimization, typography, and market visibility. Working knowledge of XHTML and CSS required. Prereq: CS 403.

CS 503 - Introduction to Web Programming
Credits: 4.00
Introduces the concepts and techniques of client-side development for the World Wide Web. Students will be taught the basics of programming and how to apply that knowledge to enhance Web pages. Topics include variables, control structures, functions, events, objects, user feedback, form handling, and the Document Object Model. Significant out-of-class programming required. Prereq: CS 40

CS 504 - Intermediate Web Development
Credits: 4.00
An intermediate-level examination of the theory and practice of developing applications for the World Wide Web. Students will learn practical techniques for designing and implementing Web applications, with a particular emphasis on server-side processing and data-driven Web sites. Working knowledge of XHTML, CSS, and some programming language is required. Prereq: CS 403 and programming course.

CS 505 - Database Programming
Credits: 4.00
Introduces 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, focusing on the language's object oriented features. Topics include the creation of programmer-defined classes and objects, collections, user controls, exception handling, regular expressions, database programming, and Web forms. 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
Introduces 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
Reviews 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 520 - 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 software and software on hardware. Historical perspectives. Prereq: CS 515.

CS 595 - Computer Science Seminar
Credits: 2.00
Students read literature about computer sciences, make oral presentations about the literature to other members of the class, and discuss the issues raised in class. The literature includes both technical and non-technical topics about computer science, including social issues related to computing and ethics in the computer science profession. Prereq: CS 516.

CS 600 - Internship
Credits: 1.00
Provides opportunity to apply academic experience in settings associated with future professional employment. A written proposal for the internship must be approved by the department chair. The proposal must specify what the student will learn from the internship, why the student is properly prepared for the internship, and what supervision will be available to the student during the internship. A mid-semester report and a final report are required. Prereq: permission. Cr/F.

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

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

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. Prereq: CS 516.

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. Prereq: CS 520 and 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 671.

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

CS 719W - Object-Oriented Methodology
Credits: 4.00
See description for CS 719. 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 516 and 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 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 516 and CS 620.

CS 725 - Computer Networks
Credits: 4.00
Introduces local, metropolitan, and wide area networks using the standard OSI Reference Model as a framework. Introduces the Internet protocol suite and network tools and programming. Discusses various networking technologies. Prereq: CS 516 and 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 730W - Introduction to Artificial Intelligence
Credits: 4.00
See description for CS 730. Writing intensive.

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 516 and CS 620.

CS 735W - Introduction to Parallel and Distributed Programming
Credits: 4.00
See description for CS 735. Writing intensive.

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 516 and CS 620.

CS 760W - Introduction to Human-Computer Interaction
Credits: 4.00
See description for CS 760. Writing intensive.

CS 765 - Introduction to Computational Linguistics
Credits: 4.00
Introduces 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.

CS 765W - Introduction to Computational Linguistics
Credits: 4.00
See description for CS 765. 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 767W - Interactive Data Visualization
Credits: 4.00
See description for CS 767. Writing intensive.

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. Prereq: CS 671.

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 671 and MATH 531.

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