50:198:110Introduction to Computing (R) (3) Introduction to computers and information technology, with an emphasis on personal computers and their applications. Understanding of and hands-on experience with application software including word processors, spreadsheets, database systems, electronic mail, and web browsers. Introductory problem solving and computer programming. Prerequisite: Satisfy mathematics requirement for admission to the colleges. |
50:198:111Introduction to Computer Science (R) (3) The first course for computer science majors. Basic concepts of computing, fundamental problem-solving techniques, and principles of structured programming. Programming in a modern high-level language (such as C/C++ or Java). Must be taken concurrently with 50:198:112 Software Laboratory I. Corequisites: 50:640:121 or 129 or 130, and 50:198: 112. |
50:198:112Software Laboratory I (R) (1) Formal laboratory that provides practical programming experience based on the lecture material of 50:198:111. Introduction to the Unix system, including the file system; programming tools such as editors, compilers, and debuggers; libraries; and other utilities. Corequisite: 50:198:111. |
50:198:113Programming with Data Structures (R) (3) Abstract data types and elementary data structures, including stacks, queues, linked lists, tree-based structures, and hash tables. Algorithmic analysis, recursion, searching and sorting, and basic algorithms. Principles of object-oriented programming and design illustrated through a modern object-oriented language (such as C++ or Java). Prerequisites: 50:198:111 and 50:640:121 or 129 or 130. Corequisite: 50:198:114. |
50:198:114Software Laboratory II (R) (1) Formal laboratory that provides practical programming experience based on the lecture material of 50:198:113. Introduction to Unix systems programming, Unix systems calls, shell scripts, and graphical user interface (GUI) libraries and tools. Prerequisite: 50:198:112. Corequisite: 50:198:113. |
50:198:151Introduction to Programming Methods Using FORTRAN (R) (3) Intended for science and engineering majors. Basic problem- solving and programming techniques, basic data structures, and fundamental numerical algorithms. Programming in FORTRAN. Corequisite: 50:640:121 or 130. |
50:198:221Programming Language Concepts (3) Design issues relevant to the implementation of programming languages: sequence control, data control, type checking, run-time storage management, language translation, and semantics. Comparison of major programming paradigms: procedural, functional, logic, and object-oriented. Language features that support parallel and distributed computing. Introduction to the relational data model and relational database query languages. Prerequisite: 50:198:113. |
50:198:231Computer Organization and Assembly Language Programming (3) Machine representation of data and instructions, instruction set architecture, memory organization, input/output, and interrupt processing. Assembly language and machine language, relation to high-level language, and operating system interface. Assembly language programming, including subroutine construction, macros, debugging, linking, and loading. (Formerly 50:198:211 Introduction to Computer Architecture and Assembly Language Programming) |
50:198:271Design and Analysis of Algorithms (3) Algorithm design techniques: divide-and-conquer, greedy method, dynamic programming, backtracking, and branch-and-bound. Advanced data structures, graph algorithms, algebraic algorithms. Complexity analysis, complexity classes, and NP-completeness. Introduction to approximation algorithms and parallel algorithms. Prerequisites: 50:198:113 and 50:640:237. |
50:198:316Parallel Programming (3) Fundamental issues in the design and development of parallel programs for various types of parallel computers. Various programming models according to both machine type and application area. Cost models, debugging, and performance evaluation of parallel programs with actual application examples. Programming techniques and optimization. Programming exercises on a contemporary parallel machine. Prerequisites: 50:198:113 or advanced programming experience and permission of instructor. |
50:198:323Software Methodology and Engineering (3) Principles and techniques for the design and construction of reliable, maintainable, and useful software systems. Software life cycle, requirements specifications, and verification and validation issues. Implementation strategies (e.g., top-down, bottom-up, teams), support for reuse, performance improvement. A treatment of human factors and user interfaces included. Prerequisite: 50:198:221. |
50:198:333Computer Hardware and Interfacing (3) Introduction to digital logic, combinational circuits, sequential circuits. Introduction to microprocessor architecture and organization, operation and programming, interfacing, and application of microprocessors. Prerequisites: 50:198:231 and 50:640:237. Corequisite: 50:198:334. Credit not given for both this course and 50:750:308. |
50:198:334Computer Hardware and Interfacing Laboratory (1) Provides hands-on experience in digital design using PLA/PLD devices, EEPROM, and MSI/LSI circuits, and interfacing of microprocessors to memory and peripherals. Corequisite: 50:198:333. Credit not given for both this course and 50:750:312. |
50:198:341Principles of Operating Systems (3) Fundamental concepts of operating systems. Process management, memory management, device management, file systems, resource allocation, security and protection. Introduction to network and distributed operating systems. Prerequisites: 50:198:113 and 231. |
50:198:346Computer Networks (3) Introduction to computer communication networks, including physical and architectural components, communication protocols, switching, network routing, congestion control, and flow control. End-to-end transport services, network security and privacy. Networking software and applications. Network installation, testing, and maintenance. Prerequisite: 50:198:113. |
50:198:347Computer Systems Administration (3) Basic administration of networked computer systems (such as Unix and/or Windows NT). Installing and configuring the operating system, upgrading software and hardware, installing patches, system backups, security issues, account creation and deletion, system accounting and log files, job scheduling, performance monitoring, tcp/ip and networking, client/server file sharing and printing, file layout and organization, disk and tape administration, and a look at several administrative tools. Prerequisites: 50:198:113 and 343. |
50:198:351Database Systems (3) Relational database theory and practice, including database design. Database concepts, relational algebra, data integrity, query languages, views. Introduction to object-oriented databases. Application project with a practical database management system. Prerequisites: 50:198:113 and 50:640:237. |
50:198:356Computer Graphics (3) Characteristics of graphics display devices and systems; representation, manipulation, and display of two- and three-dimensional objects; curve and surface modeling; two- and three-dimensional transformations; hidden lines and surfaces; shading and coloring; interactive graphics and user interfaces; animation techniques. Prerequisite: 50:198:113. |
50:198:361Artificial Intelligence (3) Techniques and applications of artificial intelligence: search, rule-based reasoning, statistical reasoning, game playing, machine learning, knowledge representation. The use of heuristics to obtain satisfactory solutions to intractable problems. Prerequisites: 50:198:113 and 50:640:237. |
50:198:376Introduction to the Theory of Computation (3) Introduction to the theory of computability, including important results from the study of automata and formal languages. Automata and their relationship to regular, context-free, and context-sensitive languages. General theories of computability, including Turing machines, recursive functions, and lambda calculus. Notions of decidability and undecidability, complexity classes, and complexity analysis. Prerequisite: 50:640:237. |
50:198:381Introduction to Numerical Methods (3) Methods of finding roots, interpolation, curve fitting, integration, differentiation, and minimization; estimation and control of various computational errors. Prerequisites: 50:198:111 and 50:640:221. |
50:198:421Compiler Construction (3) Introduction to compiler design and implementation, including lexical analysis, formal syntax specification, parsing techniques, syntax-directed translation, semantic analysis, execution environment, storage management, code generation, and optimization techniques. Prerequisites: 50:198:221, 231, and 376. |
50:198:426Information Systems Analysis and Design (3) Overview of information systems; analysis of existing systems; requirements determination; design of information systems including interface, inputs, outputs, database. Group analysis and design project. Alternative development methodologies. Modern tools for analysis and design. Prerequisite: 50:198:351. |
50:198:431High-Performance Computer Architectures (3) Architecture of pipelined and superscalar processors, vector supercomputers, multiprocessors, parallel computers, multithreaded processors, and dataflow processors. System interconnect architectures, memory hierarchy design, and input/output subsystems. System design issues such as shared memory and message-passing communication models, cache coherence and synchronization mechanisms, latency-hiding techniques, virtual memory management, and task scheduling. Prerequisites: 50:198:231 and 333. |
50:198:441Distributed Systems (3) Models of distributed systems, distributed algorithms and protocols, operating systems support, programming paradigms. Case studies of experimental and commercial systems. Prerequisite: 50:198:341. |
50:198:458Scientific Visualization (3) Study of visualization techniques useful for the analysis and interpretation of scientific and engineering data. Topics include two- and three-dimensional data types; visual representation schemes for scalar, vector, and tensor data; isosurface and volume visualization methods; animation; and interactive manipulation of data. Prerequisites: 50:198:113, 381, and 50:640:250. |
50:198:471Advanced Algorithms (3) Advanced and specialized topics in algorithms, selected from parallel algorithms, randomized algorithms, combinatorial optimization, or other. Prerequisite: 50:198:271. |
50:198:473Introduction to Computational Geometry (3) Algorithms and data structures for geometric problems that arise in various applications, such as computer graphics, CAD/CAM, robotics, and geographical information systems (GIS). Topics include point location, range searching, intersection, decomposition of polygons, convex hulls, and Voronoi diagrams. Prerequisite: 50:198:271. |
50:198:475Cryptography and Computer Security (3) Secret-key cryptography, public-key cryptography, key arrangement, secret sharing, digital signatures, message and user authentication, one-way functions, key management; attacks; practical applications to computer and communication security. Prerequisite: 50:198:271. |
50:198:481Advanced Numerical Methods (3) Numerical techniques for solving linear algebraic systems, eigenvalue problems, least squares, quadrature. Numerical solution of initial and boundary value problems for ordinary and partial differential equations. Prerequisites: 50:198:381, 50:640:250 and 314. |
50:198:483Linear Programming (3) Linear programming using the simplex method and dual linear programming. Applications of linear programming to network flows and other problems. Convex sets and elements of convex programming. Combinatorial optimization. Integer programming. Prerequisites: 50:640:221 and 250. |
50:198:485Computational Mathematics (3) Computational aspects of number theory, with a brief introduction to underlying theories. Topics include prime numbers, pseudo primes, and their applications especially in cryptography; prime factorization of composite numbers via several different methods. Computer simulation emphasized. Prerequisite: 50:640:250. Credit not given for both this course and 50:640:498. |
50:198:487Visualizing Mathematics by Computer (3) A comprehensive introduction to symbolic computational packages and scientific visualization through examples from calculus and geometry. Covers 2-D, 3-D, and animated computer graphics using Maple, Mathematica, and Geomview. Prerequisite: 50:640:221. Credit not given for both this course and 50:640:497. |
50:198:491,492Special Topics in Computer Science (3,3) In-depth study of areas not covered in regular curriculum. Topics vary from term to term. Prerequisite: As announced or permission of instructor. |
50:198:493Senior Design Project (3) Design, implementation, and demonstration of a significant software and/or hardware project. Project proposals must be submitted and approved by instructor. Part of the lecture time used to discuss such issues as the historical and social context of computing, responsibilities of the computing professional, risks and liabilities, and intellectual property. Prerequisite: Senior standing or permission of instructor. |
50:198:494Independent Study (BA) Individual study under the supervision of a computer science faculty member; intended to provide an opportunity to investigate areas not covered in regular courses. Prerequisite: Permission of instructor. |
50:198:495-496Honors Program in Computer Science (BA,BA) A program of readings and guided research in a topic proposed by the student, culminating in an honors thesis presented to the departmental faculty for approval. Prerequisite: Approval by department. |
50:198:497Computer Science Internship (BA) The practical application of computer science knowledge and skills through an approved internship in a sponsoring organization. Arrangements for the internship must be agreed upon by the sponsoring organization and approved by the department before the beginning of the term. Students should consult the department for detailed instructions before registering for this course. Prerequisite: Approval by department. |