Computer Science - CPS (56)

Administered by Department of Mathematics, Computer Science and Statistics

Effective Fall, 2005

56.110 Introduction to Computer Science (3) - Presents an introduction to computers, how computers process and manage data, are controlled, and their use 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 (3) - This course supports computer usage in scientific and technical data analysis. Basic programming principles are studied using Matlab, Mathematica, and the C language. No prior programming experience is required.

56.121 Computer Science I (4) - A programming course for students with no prior programming experience. The Java language is used to teach students how to write programs to solve problems. Problem solving methods are presented and some basic object-oriented programming design issues are discussed. Students are 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. The course 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) - A continuation of Computer Science II. The course gives an introduction to the functional, logical, and object oriented programming (OOP) language paradigms using the Java programming language. Students will gain a better understanding of programming languages in general and will specifically learn how to use OOP techniques to solve programming problems. Prerequisite: 56.122.

56.240 Assembly Language Programming (3) - The course focuses on microcomputer operating systems, introductory concepts of microcomputer architecture, macro assembly and machine language programming for microprocessors, program design, and debugging. Prerequisite: 56.122.

56.250 Programming Language Paradigms (3) (Spring) - An introductory course into the C++ programming language. The course emphasizes object oriented programming and design. Prerequisite: 56.122.

56.305 Computer Applications in Secondary School Mathematics (3) (Spring) - This course is designed to provide the prospective teacher of secondary mathematics with the knowledge to evaluate and develop software for use in secondary mathematics and the experience necessary to use a wide variety of computers and peripherals as a means of accomplishing the objectives of a secondary mathematics curriculums. 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 (3) (Spring) - Students gain knowledge of the design of combinational and sequential circuits, coding, various instruction formats, 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, and 56.240.

56.350 Organization of Programming Languages (3) (Fall) - 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 (3) (Spring) - A detailed analysis of algorithms and data structures, examination of theoretical and experimental performance of algorithms, and data structures. With particular attention to algorithms for searching and sorting and techniques for implementing and manipulating various data structures: stacks, queues, trees, graphs and files. Prerequisite: 56.221, 53.185, and 53.126.

56.356 Windows Programming (3) (Spring) - 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.122 or 92.256.

56.357 Principles of Database Design (3) (Fall, even-numbered years) - Considers the principal functions of Database Management System (DBMS). The basic concepts used by all database models will be studied in detail. The details of the hierarchical, network and the relational database models will be studied in detail. The course will examine query languages in general and use a Data Manipulation Language (DML) and study its applications. Prerequisite: 56.221.

56.361 Coding and Signal Processing (3) (Spring) - A mathematical approach to codes and ciphers. Topics include security codes, coding for efficiency in computer storage, error-correcting codes, and signal processing, including the Fourier transform and digital filters. Individual projects required. Prerequisite: 53.126, and 56.116 or 56.121.

56.373 Numerical Methods in Computing (3) (Fall) - 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 design and execute algorithms on a computer for specific numerical procedures. Prerequisite: 56.121 and 53.126.

56.374 Introduction to Discrete Systems Simulation (3) (Spring, odd-numbered years) - Studies the ways that systems can be modeled for computer solutions and emphasizes stochastic behavior by discrete random processes and the simulation tools for their solution. Prerequisite: One course each in calculus, statistics, and programming.

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. It also 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) - A study of the foundations of modern operating systems along with the concurrent programming problems associated with these systems. Students will write and test their own solutions to some of these problems. Problems encountered in the development of all modern systems will be covered along with possible solutions. Prerequisite: 56.221

56.410 Computer Graphics (3) (Spring, even-numbered years) - 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 consent of the instructor.

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

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

56.450 Compiler Construction (3) (Spring, odd-numbered years) - This course gives the students an introduction to the construction of compilers and interpreters. The compiler is broken down into its phases: scanning, parsing, semantic analysis, optimization, and code generation. The students study the relevant theory in these phases as they program a compiler. Prerequisite: 56.350 and 56.221.

56.456 The Theory of Computation (3) (Spring, odd-numbered years) - 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.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: The student 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.