Professors: Castek, Riley , Senger;
Associate Professors: Gendreau (Chair), Headington, Sutherland, Thibault;
Assistant Professors: Chung, Egle, Hunt;
Lecturers: Barkauskas, Burand.

Computer Science Major
(Business, Liberal Studies, Science and Allied Health) - 40 credits, including C-S 120, 220, 270, 340, 341, 370, 390, 421, 441, and one course selected from C-S 431, 442, 443, 452, 453, 470, 471. The 40 credits must include no less than 28 credits of 300-level and 400-level courses. PHY 335 may be used as part of the 40 credit major. MTH 317 and/or MTH 371 may be used as part of the 40 credit major. In addition to the 40 credits, MTH 207, MTH 208 and MTH 225 must be taken.

Computer Science Major
(Health, Physical Education, and Recreation, Middle/Secondary Education) - 36 credits including C-S 120, 220, 270, 340, 341, 370, 421 or 441, 480, C-I 420. The 36 credits must include no less than 24 credits of 300-level and 400-level courses. PHY 335 may be used as part of the 36 credits. MTH 317 and/or MTH 371 may be used as part of the 36 credit major. In addition to the 36 credits, MTH 207, MTH 208, and MTH 225 must be taken.

Computer Science Minor
(Business, Liberal Studies, Science and Allied Health) - 24 credits, including C-S 120, 220, 270, and 340. The 24 credits must include no less than 12 credits of 300-level and 400-level courses. PHY 335 may be used as part of the 24 credit minor. MTH 317 and/or MTH 371 may be used as part of the 24 credit minor. In addition to the 24 credits, MTH 225 must be taken.

Computer Science Minor
(Health, Physical Education, and Recreation, Middle/Secondary Education) - 22 credits, including C-S 120, 220, 270, 340, and C-I 420. The 22 credits must include no less than ten credits of 300-level and 400-level courses. PHY 335 may be used as part of the 22 credit minor. MTH 317 and/or MTH 371 may be used as part of the 22 credit minor. In addition to the 22 credits, MTH 225 must be taken.

Students majoring in computer science who wish to enroll in CEI 450 or CEI 475, University Internships, must have completed 15 credits of computer science course work, including C-S 220, and must have a minimum GPA of 2.50 in computer science courses to be eligible for departmental approval and supervision. Credits earned in internships do not apply to major or minor requirements.

+ above a course number indicates a General Education course.

C-S 101 Cr. 4
Introduction to Computing
Computers and computer software are an integral part of modern society. This course explores this relationship. Students will examine the computer as a problem-solving tool through the use of database, spreadsheets and small scale programming. Students will examine the computer as a communication tool through the use of word processing and the Internet. Other topics include the history and future of computer technology, computer hardware basics, man/machine relationships, applications of computers in various disciplines, and social/ethical issues. Credits earned in C-S 101 cannot be applied to the C-S major or minor. +

C-S 120 Cr. 3
Software Design I
An examination of the fundamentals of software design; including logic, control structures, classes, objects, inheritance, polymorphism, and software engineering techniques. Students complete projects in developing precise problem definitions, designing algorithmic solutions and coding algorithms in a modern programming language. The course also emphasizes the use of software tools as programming aids. Prerequisite: MTH 151 or high school equivalent.

C-S 220 Cr. 3
Software Design II
This is a second course in the design of programs. Emphasis is placed on data abstraction and its application in design. Definitions of abstract data types are examined. The following structures are examined as methods for implementing data abstractions: recursion, sets, stacks, queues, strings, and various linked lists. Students will be expected to write several programs using these techniques in a modern programming language. Prerequisite: C-S 120.

C-S 222 Cr. 3
COBOL Programming
This course is designed to provide students with an understanding of the COBOL Programming language with an emphasis in file processing. Prerequisite: C-S 120.

C-S 224 Cr. 1-3
Introduction to the ____________ Programming Language
This course presents the syntax and semantics of a particular programming language. Different offerings of the course will present different languages. Students are expected to be fluent in another programming language prior to enrollment. Prerequisite: a prior computer science course appropriate to the language being offered. (Repeatable for credit - maximum 6. Each repeat must be for a different language.)

C-S 270 Cr. 3
Assembler Programming and Introduction to Computer Organization
Programming in machine and assembler language is integrated with an introduction to the organization of computer hardware. An examination of the instruction set merges with descriptions of the related hardware devices. Laboratory assignments include the construction of software, as well as hardware, units. Topics include basic instruction types, data representation, addressing modes, combinational circuit design, flip-flops, registers, the ALU, computer memory, and interrupt handling. Prerequisite: C-S 120, MTH 225 or concurrent enrollment.


C-S 301/501 Cr. 2
Using the Internet
An introduction to the Internet and computer networking. A survey of Internet resources and methods used to retrieve and create Internet resources. Topics include: connecting to the Internet, electronic mail, file transfer, remote login, Mosaic, World Wide Web, Gopher, TCP/IP, networking hardware. Not applicable to a computer science major or minor.

C-S 340 Cr. 3
Software Design III: Abstract Data Types
An extensive survey of data structures and associated algorithms. An introduction to algorithm efficiency measures is included as a tool for deciding among alternate algorithms. Topics include: searching and sorting in arrays, hash tables, tree traversal and search algorithms, expression evaluation and graphs. Prerequisites: C-S 220 and MTH 225.

C-S 341 Cr. 3
Software Design IV: Software Engineering
A study of methodologies for the development of reliable software systems. Several specification, design, and testing techniques are surveyed with an emphasis on one particular formal specification and formal design technique. Students work in teams, applying these techniques to the development of a medium scale (2000-5000 lines) software product. Prerequisite: C-S 340.

C-S 342 Cr. 3
Software Testing Techniques
As the size and complexity of software projects have grown, so has the importance of ensuring program correctness. This course examines the issues of program testing, validation, and verification. Course projects require students to construct test data and to analyze the correctness of several software systems. Prerequisite: C-S 340.

C-S 351 Cr. 3
Programming computers to play games and imitate activities of systems such as drive-in facilities, check-out lanes, and computeroperations. Topics include tests of goodness of fit, random number generators, simulated sampling, queuing theory, analysis of systems to be simulated, construction and validation of simulation programs, and interpretation of results. Prerequisites: C-S 220 and MTH 207.

C-S 352 Cr. 3
Computer Graphics and Scientific Visualization
An introduction to the fundamentals of computer graphics and its application to Scientific Visualization. Topics include basic imaging algorithms, geometric transformations, hidden surface algorithms, polygonal rendering, solid modeling, lighting models, and specialized graphics hardware. Prerequisites: C-S 340 and MTH 207.

C-S 353 Cr. 3
Analysis of Algorithm Complexity
An in-depth analysis of the computational complexity of a wide range of algorithms for problems of fundamental importance to computer science. Algorithms to be examined include: sorting, pattern matching and various graph algorithms. Prerequisites: C-S 340 and MTH 207.

C-S 364 Cr. 3
Introduction to Database Management Systems
Introduction to the design and organization of database management systems. Topics include the relational data model, relational algebra, SQL query language, data security, normalization, client/server environments. Prerequisites: C-S 120 and MGT 220 or a 200 level C-S class. Students with credit in C-S 362 (course now deleted) may not get credit in 364.

C-S 365 Cr. 3
Systems Analysis
This course is designed to give students a theoretical and applied background in systems analysis. The student will learn how to perform a system analysis utilizing the Study, Design and Development Phases necessary in the overall life cycle of a computer-based business system. Prerequisite: C-S 220.

C-S 370 Cr. 3
Computer Architecture
A presentation of the logical organization of modern digital computers. Topics include performance evaluation, instruction set design, computer arithmetic, processor control, pipe-lining, cache memory, memory hierarchy, memory and system buses, and I/O organization. Prerequisites: C-S 270 and MTH 225.

C-S 390 Cr. 1
Computer Science Seminar
A seminar course providing an overview of trends in, and applications of, computer science. Prerequisite: computer science major with junior standing.

C-S 395/595 Cr. 1-3
Independent Study
Individualized study of topics in computer science not covered by courses regularly taught in the department. Prerequisite: written consent of the instructor and the department chair. Repeatable for credit - maximum 6.

C-S 419/619 Cr. 1-3
Topics in Computer Science
A special topics course in Computer Science which will function as a forum for new ideas and testing ground for new courses. Prerequisite: Consent of instructor. Repeatable for credit - maximum 6.

C-S 421 Cr. 3
Programming Language Concepts
A comparative study of the concepts underlying the design of contemporary high-level programming languages, including imperative, functional, logic and object-oriented paradigms; formal representation of syntax and semantics; control structures; data and procedural abstraction; scope and extent; parallelism and exception handling. Prerequisite: C-S 340.

C-S 431 Cr. 3
Introduction to Robotics
This course is a hands-on introduction to the algorithms and techniques required to write robot control software. Topics include the components of mobile robots and robot manipulators, manipulator kinematics, robot task planning, sensing, sensor fusion, visual servoing and robot control concepts. Prerequisite: C-S 340.

C-S 441/641 Cr. 3
Operating System Concepts
The study of the structures and algorithms of operating systems. Operating systems are viewed as managers and controllers of resources such as processors, memory, input and output devices and data. Topics include multiprogramming systems, CPU scheduling, memory management and device management. Prerequisites: C-S 340 and 370.

C-S 442/642 Cr. 3
Structure of Compilers
An extensive study of all phases of the compilation of high level programming languages. Topics include: scanning, parsing (LL and LR), semantics analysis, symbol table organization and manipulation, internal code generation, storage allocation, optimization and object code generation. Students are required to complete a compiler for a small high-level language. Prerequisites: C-S 270 and 340.

C-S 443/643 Cr. 3
Topics in Operating Systems
An intermediate course in operating systems extending topics introduced in C-S 441. Operating systems concepts are studied in depth. Typically students will study and modify an existing system. Prerequisite: C-S 441.

C-S 452/652 Cr. 3
Artificial Intelligence and Pattern Recognition
An introduction to the fundamental principles of artificial intelligence. Topics include the biological basis for intelligence, classification of object descriptions and pattern recognition, search strategies and game trees, natural language processing, automatic theorem proving, programming for artificial intelligence and knowledge-based systems. Projects include writing a substantial artificial intelligence application program. Prerequisite: C-S 340.

C-S 453/653 Cr. 3
Introduction to the Theory of Computation
An introduction to the theoretical aspects of computation. The capabilities and limits of several computation models are considered including: partial recursive functions, Turing machines, finite state automata and formal languages. The implications of Church's thesis and unsolvable problems such as the halting problem are discussed. Prerequisite: C-S 340.

C-S 464 Cr. 3
Advanced Database Management Systems
Advanced topics in database management systems. Topics include the relational data model, relational calculus, embedded SQL programming, database application programming, indexing, systems software and storage structures for databases, concurrency control, crash recovery, database administration, parallel and distributed databases, object oriented databases. Prerequisites: C-S 364 and C-S 220.

C-S 470/670 Cr. 3
Parallel and Distributed Computing
A study of architectures, control software, and applications for parallel and distributed systems. A survey of parallel and distributed architectures including data flow machines, vector processors, shared memory multiprocessors, and message based multiprocessors. Software topics include process communication and synchronization, global state maintenance, negotiation, scheduling, data parallelism, control parallelism, and languages for parallel and distributed computing. Prerequisite: C-S 370.

C-S 471/671 Cr. 3
Data Communications
An introduction to data communications, including the electrical properties and software protocols. In addition to presentations of the concepts and techniques used for data communications, several currently used standards and communications networks will be examined. Prerequisites: C-S 270 and 340.

C-S/C-I 480/680 Cr. 3
Survey of Computer Assisted Instructional Systems
A survey of current trends in Computer Assisted Instruction (CAI). Development of instructional and curriculum materials suitable for computer applications. Use of a current authoring software package. Prerequisite: C-S 224 or C-I 420/620. (Cross-listed with C-I; may only earn credit in C-S or C-I.)

C-S 499 Cr. 1-3
Research in Computer Science
An opportunity to become acquainted with literature in the field and to work on a profes-sional level research project within an area of interest of the computer science faculty. A seminar reviewing the results of the study will be a requirement for completion of the course. Prerequisite: consent of computer science staff. Repeatable for credit - maximum 6.