| 91.101 | Computing I | Credits: 4 |
| Introduction to computing environments: introduction to an integrated development environment; C, C++, or a similar language. Linear data structures; arrays, records, and linked lists. Abstract data types, stacks, and queues. Simple sorting via exchange, selection, and insertion, Basic file I/O. Programming style documentation and testing. Ethical and social issues. |
| |
| 91.102 | Computing II | Credits: 4 |
| Pointers. Lists, stacks and queues. Binary trees, AVL trees, n-ary trees. Advanced sorting via quicksort, heapsort, etc. Characters and strings. Graphs. Advanced file techniques. Recursion. Programming style, documentation, and testing. Ethical and social issues This course includes extensive laboratory work. |
| |
| 91.110 | Interactive Robotics | Credits: 3 |
| UML TEAMS Academy students will work with the iRobot Create, the C programming language, and various sensors to learn how to create and program robots to interact with the environment. Students will learn how to program and explore fundamentals of robotics control in a hands-on laboratory environment. Students will work through a series of laboratory experiments, will participate in class competitions, and will work in teams to design and build an open-ended final project.
Instructor Consent required.
This course is open only to high school stdents accepted to the UML TEAMS Academy. |
| |
| 91.111 | Everyday Computing | Credits: 3 |
| A non-technical introduction to computer science. The historical development of computational aids and their use in various cultures and societies. Modern examples of computational aids, including integrated word processing/spreadsheet/database environments. Not for computer science majors.
Does not satisfy science requirements for Science majors but may be used as a free elective by Science majors. |
| |
| 91.113 | Exploring the Internet | Credits: 3 |
| This course focuses on the primary tools used to navigate the Internet from a Windows desktop: e-mail and the web browsers. In addition, this course covers many of the other applications of the Internet: ftp, listserve, newsgroups, chat, search engines, and portals. Students will complete hands-on exercises, including construction of their personal web page.
Not for computer science majors. |
| |
| 91.114 | Advanced Internet | Credits: 3 |
| This course is a continuation of 91.113 Exploring the Internet for non-computer science majors. This course covers network security, advanced features of standard Internet tools, and other advanced topics of the Internet. |
| |
| 91.117 | Artbotics | Credits: 4 |
| Artbotics focuses on exploring the intersection among art, computer science, and robotics. The course is project-driven, and includes public exhibitions and service learning. Students will learn founding principles in both the fields of art and computer science, and put them into practice by creating interactive, tangible exhibits that are displayed in public settings. In the service learning component, students will mentor local high school students in the same topics. The course will also include guest lectures from practitioners in the fields. |
| |
| 91.119 | Tangible Interaction Design | Credits: 3 |
| Tangible Interaction Design focuses on understanding how people interact with the designed things in the everyday world around us. The course is project-oriented with two significant projects and a series of smaller lab assignments. Through these assignments, students will learn elements of graphical communication and principles of interaction in computationally-enabled devices. |
| |
| 91.201 | Computing III | Credits: 4 |
| Object-oriented programming. Classes, methods, polymorphism, inheritance. Object-oriented design. C++. UNIX. Ethical and social issues. |
| |
| 91.203 | Assembly Language Programming | Credits: 4 |
| Presents the organization and operation of a conventional computer, including principal instruction types, data representation, addressing modes, program control, I/O, assembly language programming, including instruction mnemonics, symbolic addresses, assembler directives, system calls, and macros, the usage of text editors, symbolic debuggers, and loaders, and the use of pseudocode in guiding structured assembly language programming. |
| |
| 91.204 | Computing IV | Credits: 3 |
| Development of large software projects. Software engineering principles and practice. Object-oriented analysis and design. CASE productivity aids. Development techniques for program-translation software and web software. |
| |
| 91.211 | Computer Science for SRT Applications | Credits: 3 |
| This course is an introduction to C programming, with applications in sound recording technology. Students will write and execute several programs that perform operations pertinent to SRT, including manipulating MIDI codes, performing simple signal processing functions, processing sampled data, and synthesizing sound algorithmically.
Not for computer science majors. |
| |
| 91.301 | Organization of Programming Languages | Credits: 3 |
| Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters. |
| |
| 91.304 | Foundations of Computer Science | Credits: 3 |
| A survey of the mathematical foundations of Computer Science. Finite automata and regular languages. Stack Acceptors and Context-Free Languages. Turing Machines, recursive and recursively enumerable sets. Decidability. Complexity. This course involves no computer programming. |
| |
| 91.305 | Computer Architecture | Credits: 3 |
| Examines the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and micro code. |
| |
| 91.308 | Operating Systems | Credits: 3 |
| Presents an introduction to major operating systems and their components. Topics include processes, concurrency and synchronization, deadlock, processor allocation, memory management, I/O devices and file management, and distributed processing. Techniques in operating system design, implementation, and evaluation will be examined. |
| |
| 91.309 | Database I | Credits: 3 |
| This course surveys topics in database management systems. Topics include access methods, data models ( relational, semantic, object-oriented and object-relational), query languages,database design, query optimization, concurrency control, recovery, security, integrity, client-server architecture, and distributed database systems. A database application project will be assigned. |
| |
| 91.310 | Database II | Credits: 3 |
| Advanced topics in database systems, including distributed database systems, query optimization, concurrency control, knowledge bases, deductive databases, extendibility, and object-oriented database systems. Additional topics may include benchmarking, scientific databases, and parallelism. Software engineering principles will be applied to the development of components of a database management system. |
| |
| 91.330 | Symbolic Logic | Credits: 3 |
| Propositional logic and first-order predicate logic. Natural deduction and other proof systems. Semantics. Applications to natural and artificial languages. |
| |
| 91.350 | Special Topics | Credits: 1 |
|
| |
| 91.401 | Software Project I | Credits: 3 |
| Specification, design, and implementation of a one- or two-semester software project proposed to a directing faculty member. Projects may be proposed as a one- or two-semester effort based on faculty approval. A two-semester effort requires subsequent registration for 91.402. Prerequisite: Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to department chairperson |
| |
| 91.402 | Software Project II | Credits: 3 |
| A continuation of 91.401. Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to the department chairperson. |
| |
| 91.404 | Analysis of Algorithms | Credits: 3 |
| Development of more sophisticated ideas in data type and structure, with an introduction to the connection between data structures and the algorithms they support. Data abstraction. Controlled access structures. Trees, lists, graphs, arrays; algorithms design strategies; backtracking, greedy storage, divide and conquer, branch and bound. Elementary techniques for analysis; recursion equations, estimations methods, elementary combinatorial arguments. Examination of problem areas such as searching, sorting, shortest path, matrix and polynomial operations, and the indicated representations and algorithms. The student will use the techniques learned in this course and in previous courses to solve a number of logically complex programming problems. |
| |
| 91.406 | Compiler Construction I | Credits: 3 |
| Includes both theory and practice. A study of grammars; specification and classes; the translation pipeline: lexical analysis, parsing, semantic analysis, code generation and optimization; and syntax-directed translation. Use of automatic generation tools in the actual production of a complete compiler for some language. |
| |
| 91.411 | Software Engineering I | Credits: 3 |
| Software Engineering is an essential discipline for any computer science major. In this class you will learn skills that will help you design and build software projects for advanced computer science classes This course provides an introduction to systematic techniques for development of software, i.e. , "the Engineering of Software". Topics to be discussed include software life-cycle, group coordination, requirements specification, software design, software testing and software maintenance. Emphasis is given to the development of one complex software system and the system documentation necessary for such a complete software product The students will mock the software cycle via a medium-to-large semester-long project. |
| |
| 91.412 | Software Engineering II | Credits: 3 |
| Software development methodologies for large-scale systems. Project organization, life cycle concept, data modeling, structured analysis and design, information hiding, and the use of computer-aided software engineering (CASE) tools. Team projects are required; these emphasize the design, documentation, and maintenance of complex software systems. Not open to students who have taken 91.523 Software Engineering I. |
| |
| 91.413 | Data Communications I | Credits: 3 |
| This course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics include: TCP/IP and OSI layered network architectures and associated protocols, application layer, network programming API (sockets), transport, congestion, flow control, routing, addressing, autonomous systems, multicast and link layer. Examples will be drawn primarily from the Internet. |
| |
| 91.414 | Data Communications II | Credits: 3 |
| A continuation of 91.413. Topics include Multimedia Networks, network Management, Network Security, Wireless and Mobile Networks. Students will track discussion in IETF committees and work in a dedicated network laboratory. |
| |
| 91.420 | Artificial Intelligence | Credits: 3 |
| Discusses LISP, tree and graph searching algorithms: breadth first, depth first, and uniform cost. Also covers heuristic search methods, admissibility, and games: mini-max, alphaBeta. Students will learn theorem proving and question answering. |
| |
| 91.421 | Machine Learning | Credits: 3 |
| Fundamentals theory of machine learning techniques, such as the use of search and what is or is not learnable; commonly used learning algorithms; decision tree learning, neural network learning, Bayesian network learning, support vector machines, genetic algorithms, clustering and reinforcement learning. Application of machine learning to solve problems, case studies, and review of current machine learning literature. |
| |
| 91.427 | Computer Graphics I | Credits: 3 |
| Introduction to graphics systems and concepts. History of graphics. Introduction to hardware, software, and mathematical tools. Graphics languages and APIs (GKS, PHIGS, Direct 3D,OpenGL). Graphics data structures and algorithms for 2D and 3D modeling and viewing. Input, archiving, and display architectures. Introduction to hidden line and hidden surface removal. |
| |
| 91.428 | Computer Graphics II | Credits: 3 |
| An advanced course in computer graphics for students familiar with basic issues in computer graphics. Details on hidden line and surface removal. 2D and 3D curve and surface generation. Rendering, illumination, and color models. Realism through precision (ray tracing) and imprecision (fractals). Windowing and user interface management systems. Modern hardware architectures. Animation and simulation systems. |
| |
| 91.450 | Robotics I | Credits: 3 |
| An introduction to robotics, including laboratory. In the lab, students build and program robots. Topics to be covered include sensors, locomotion, deliberative architectures, reactive architectures, and hybrid architectures. |
| |
| 91.451 | Robotics II | Credits: 3 |
| Advanced topics in robotics, including laboratory. Topics to be covered include map making, path planning, computer vision and learning. Research-level robots are used in the laboratories. |
| |
| 91.457 | Computer Security | Credits: 3 |
| Basic concepts of cryptography, data security, information theory, complexity, number theory, and finite field theory; encryption algorithms including the Data Encryption Standard (DES) and public key systems; incorporating cryptographic controls into computers; key management; access controls; information flow controls; and inference controls. |
| |
| 91.460 | Selected Topics | Credits: 3 |
| Depends on faculty interest, student demand, and developments in the field. |
| |
| 91.461 | Graphical User Interface Programming I | Credits: 3 |
| This is a first course in the design and implementation of graphical user interfaces (GUIs) for windowing environments. The course involves numerous programming projects that are evaluated on design and layout of the user interface, coding style, and comprehensiveness of documentation. The course may be taken on its own, but is intended to be followed by 91.462 to complete a two-course CS project sequence. |
| |
| 91.462 | Graphical User Interface Programming II | Credits: 3 |
| A second course in the design and implementation of graphical user interfaces for windowing environments. |
| |
| 91.480 | Honors Project I | Credits: 3 |
| This course provides an undergraduate research experience for Computer Science majors enrolled in the Honors Program. Each student develops a project idea in consultation with the instructor. The student writes a proposal for the project, reads the relevant literature, performs the project, writes a project report or thesis, and makes an oral presentation about the project. |
| |
| 91.481 | Windows Practicum/Internship | Credits: 3 |
| In this course, students continue and complete the project started in 91.480 Honors Project I. |
| |
| 91.490 | Directed Studies in Computer Science | Credits: 3 |
| Individual study for a student desiring more advanced or more specialized work. This course may not be taken more than twice and may not be substituted for scheduled offerings. Prerequisite: Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to the department chairperson. |
| |