Computer Science - CPS (56)

Administered by Department of Mathematics, Computer Science and Statistics

Effective Fall, 2004

56.110 Introduction to Computer Science (3) - Presents an introduction to computers, how computers process and manage data, how computers are controlled, and how computers are used in problem solving. Fundamental concepts include hardware, I/O systems, data communications, usage of the world wide web, building web pages, and programming in Java or Visual Basic. Applications such as word processing, spreadsheets, presentation software and database are included. Not appropriate and credit for 56.110 will not be given to a student who has taken Computer and Information Systems 92.150.

56.116 Algorithmic Processes for Computers (3) - Emphasizes concepts of FORTRAN 77; input and output, program documentation and control, structured programming, extended modes of arithmetic, character strings and program development and execution. May not be used toward the Computer Science major. Prerequisite: Programming experience or consent of the instructor.

56.121 Computer Science I (4) - A programming course for students with no prior programming experience. Teaches students how to write programs to solve problems using Java language. Problem solving methods are presented and some basic object-oriented programming design issues are discussed. Students given extensive "hands-on" experience with guidance from the instructor Prerequisite: 56.110 or the equivalent.

56.122 Computer Science II (4) - A continuation of Computer Science I. Emphasizes software engineering principles in the context of programming. Elementary program performance analysis is performed. Class covers searching and sorting algorithms. Pointers and dynamic structures: linked lists, stacks, queues and binary trees will also be studied. Advanced object oriented design methodologies and recursion will be introduced. Prerequisite: 56.121.

56.221 Computer Science III (4) - Increases the students breadth and flexibility as a programmer and is a prerequisite for most 300 and 400 level courses in computer science. Covers C and C++ languages as well as editing, compiling and debugging in a Unix environment. Introduces nonlinear data structures and hashing and emphasizes object oriented programming and design. Prerequisite: 56.122.

56.240 Assembly Language Programming (3) - Advanced topics in programming with a microcomputer, introductory concepts of microcomputer architecture, operating systems and machine and assembly language for microprocessors. Prerequisite: 56.122.

56.250 Programming Language Paradigms (3) (Spring) - Gives an introduction to the functional, logical and object oriented programming language paradigms. Entering students should already have at least one year of experience with a block structured procedural language. Course gives students a better understanding of programming languages in general and will specifically lead to an understanding of how to use a specific language from three different programming language paradigms to solve programming problems. Prerequisite: 56.221.

56.305 Computer Applications in Secondary School Mathematics (Spring) (3) - Studies the theory, design and usage of a computer as an instructional or training tool. Uses microcomputer to demonstrate and develop software applications. Prerequisite: 56.121.

56.323 Artificial Intelligence (3) (Fall, even numbered years) - Provides an understanding of the philosophy, content, methods, successes and failures of artificial intelligence. Course includes history of artificial intelligence, knowledge representation, game playing, expert systems, logic and theorem proving, search strategies, natural language processing, neural networks, genetic algorithms and problem solving. Prerequisite: 56.221

56.330 Digital Design (Spring) (3) - Design of combinational and sequential circuits. Coding, various instruction formats and representation of data. Memory, central processors, input-output devices. Introduction to computer architecture. Characteristics and features of some existing computer systems. Prerequisites: 56.122, 53.185, 56.240

56.350 Organization of Programming Languages (Fall) (3) - An introduction to the issues of programming languages: syntax, semantics, parsing, language specification and analysis. Emphasis on the run-time behavior of programming language constructs. Prerequisite: 56.250.

56.355 Analysis of Algorithms and Data Structures (Spring) (3) - A detailed analysis of algorithms and data structures. Examination of theoretical and experimental performance of algorithms and data structures. Particular attention to algorithms for searching and sorting and techniques for implementing and manipulating various data structures: stacks, queues, trees, graphs and files. Prerequisites: 56.221, 53.185, 53.126.

56.356 Windows Programming (Spring) (3) - Introduces object oriented programming including the concepts of objects, windows environment, inheritance, encapsulation, polymorphism and event driven programming. Participation in the development of a large scale application project is required. Prerequisite: 56.221 or 56.250.

56.357 Principles of Database Design (Fall, even-numbered years) (3) - Considers the principal functions of a database management system. Basic concepts used by all database models will be taught. Details of the hierarchical, network and relational database models will be studied in detail. Course examines query languages in general and uses a data manipulation language (DML) and studies its applications. Students implement a relational database management system that involves execution of operations such as an intersection, union, difference, join and multijoins of relations. Study of a commercially available DML prepares students for a career dealing with database systems. Prerequisite: 56.221.

56.373 Numerical Methods in Computing (Fall) (3) - An analysis and application of various methods of numerically solving problems in the areas of nonlinear equations; systems of equations, interpolation and polynomial approximation; numerical integration; approximation theory; and differential equations. Students use a computer to design and execute algorithms for specific numerical procedures. Prerequisites: 56.121 or 56.116, 53.126.

56.375 Local Area Networks (3) (Fall, odd-numbered years) - Examines in detail key local area network standards and the fundamental concepts of local area network (LAN) technology. Provides an understanding of network architecture, data transmission methods and major LANs currently in use. Investigation of LAN protocols, topologies and network operating systems includes hands on experience in installing and demonstrating peer-to-peer and client-server LANs. Prerequisite: 56.240 or permission of the instructor.

56.386 Concurrent Programming and Foundations of Operating Systems (3) (Fall) - Studies the foundation of modern operating systems and concurrent programming problems associated with these systems. Students write and test their solutions to problems. Covers problems and possible solutions encountered in the development of all modern systems. Prerequisite: 56.221.

56.410 Computer Graphics (Spring/even-numbered years) (3) - Presents the basic principles for design, use and understanding of graphics systems. Hardware and software components of graphics systems examined with a major emphasis on creating and manipulating graphics displays using a software graphics package; the package includes standard computer graphics algorithms. Two and three dimensional graphics, animation, color, hidden line and hidden surface algorithms studied in depth. Prerequisites: 56.221; 53.225 or 53.314 recommended.

56.430 Computer Architecture (Spring/ odd-numbered years(3) - Examines design issues for modern, high-performance computer systems. Topics include bus structures, memory heirarchies, RISC and CISC instruction-set paradigms, pipelining and superscalar processor designs, microprogrammed control and input/output and bandwidth issues. Prerequisite: 56.330.

56.444 Introduction to Parallel Processing (Fall/odd-numbered years)(3) - Provides an overview of parallel processing, parallel architectures, design and analysis of parallel algorithms. Focuses on the development and performance evaluation of parallel algorithms on parallel architectures. Prerequisite: 56.221.

56.450 Compiler Construction (Spring/odd-numbered years) (3) - An introduction to the construction of compilers and interpreters. The compiler is broken down into phases of scanning, parsing, semantic analysis, optimization and code generation. Studies the relevant theory in the phases as students program a compiler. Prerequisites: 56.350 and 56.221.

56.456 The Theory of Computation (Spring, odd numbered years) (3) - An introduction to automata, formal languages and computability. Topics include finite automata, pushdown automata, context-free grammars, Turing machines, algorithmically unsolvable problems and computational complexity. Prerequisites: 53.185 and 56.112 or consent of the instructor.

56.491 Special Topics in Computer Science (3) - Presents an area of computer science which is not available as a regular course offering. Prerequisite: Consent of the instructor.

56.492 Computer Science Research 1 ( 1 -3) First semester of a computer science research investigation. Students will conduct a literature search, develop a research plan, and initiate investigation and design efforts for a computer science problem. Approximately 40 -120 hours per semester depending on the number of credits. Prerequisite: approval of the Math / Comp Science department.

56.493 Computer Science Research 2 (1 -3) Continued investigation of a computer science research problem for advanced students. Students will pursue investigation and design efforts on a computer science problem. The activity may be a continuation of research conducted for 56-492. Approximately 40 - 120 hours per semester depending on the number of credits. Prerequisite: 56-492, and approval of the Math / Comp Science department.

56.497 Internship in Computer Science (2-12) - Provides computer science majors with an opportunity to acquire meaningful and professional on-site training and learning in computer science at an industrial, private or business workplace. Note: a student may, with departmental approval, apply a maximum of 3 credits of internship toward the fulfillment of the computer science major. Each 1 academic credit requires 40 hours of supervised work and the limit is 12 total credit hours for internships. Prerequisites: students must establish adequate course preparation for the proposed internship. Internship applications must be submitted one month before the internship begins and must be approved by the department chairperson.

56.576 Networks: Configuration and Implementation (3) - Introduces students to terminology, concepts, hardware and software related to the establishment of a local network and provides hands-on experience in the procedure necessary to install both a PC and Macintosh-based local area network.