UMass Logo2002/03 Undergraduate Course Catalog Banner
[Home][Courses & Programs][Academic Information][Undergraduate Admissions][General Information][Site Index] [APPLY NOW]

Department & Program Listings
[Program Listings: A-D]
[Program Listings: E-L]
[Program Listings: M-R]
[Program Listings: S-Z]
[Program Listings: Show All]

 

 

Computer Science Courses

Computer Science | Courses | Faculty


(All courses carry 3 credits unless otherwise noted. Students should check with the Department office for current information regarding which courses will be offered each semester.)

102 Computers and Society (R2)
(both sem)

What computers are, how they are used, and how their use affects society. Origins of computing and the forces that brought it about. Essential hardware components of the computer. Introduction to basic programming methods using the JavaScript language. Use of computers in business, professions, art, and science, effect of the Information Superhighway. Social, political, and economic impact of computers on society: privacy, robotics, computers in political action. Use of computer required. Not open to CMPSCI majors or premajors.

105 Computer Literacy (R2) (both sem)

How computers can help solve problems efficiently and effectively. Broad introduction to hardware and software aspects of microcomputers. Four application areas: word processing, spreadsheets, databases, and telecommunications (access to the Internet). Uses University microcomputer labs; weekly 90-minute lab sessions. Students more interested in programming should take CMPSCI 121. Prerequisites: reasonable high school math skills. Typing ability an important asset.

120 Introduction to Problem Solving with the Internet (R2) (both sem)

Basic skills needed to use the Internet. UNIX commands, e-mail management, listserv software, gophers, Usenet newsgroups, ftp file transfers, telnet sessions, www browsers, basic Web page design, and PGP-based cryptography. Relevant social and political topics: copyright law, First Amendment issues, computer security, personal privacy, electronic cash, commercialization, and bandwidth pricing strategies. Not intended for Computer Science majors. Programming experience not required. Prerequisites: some hands-on experience with PCs or MACs or UNIX.

121 Introduction to Problem Solving With Computers (R2) (both sem)

An introductory course in problem solving, using the programming language Java. Focuses on the fundamental concepts of problem solving and on computer imple-mentation. Satisfactory completion is a prerequisite for all higher-level computer science courses. Use of computer required. Prerequisite: high school algebra and basic math skills (R1).

187 Programming with Data Structures (R2) (both sem) 4 cr

Advanced programming techniques in the Java language. Elementary techniques of software engineering: documentation, coding style, basic testing principles, and informal reasoning about correctness. The notion of an abstract data structure and various important data structures: stacks, queues, linked lists, tree-based structures, and hash tables. Use of object-oriented language constructs for encapsulation of data objects. Lecture, programming projects. Prerequisites: basic math skills and high school algebra (R1); CMPSCI 121 or equivalent.

195A Representing, Storing, and Retrieving Information

Recommneded for First Year and Sophomore Non-Majors. The use of data in computer systems. Formats for representing text, sound, images, etc., as strings of bits. Basic information theory, use and limitations of file compression. Structured databases and how to use them. Information retrieval in heterogeneous environments such as the Web. XML as a language for defining new formats for representing data. Prerequisites: user-level familiarity with a modern operating system and some experience with application programs; Tier I math skills.

201 Architecture and Assembly Language (both sem) 4 cr

Introduction to computer organization and programming in assembly language. Various experiments performed using an 8086-based microcomputer system. Develops skills in programming bare or nearly bare machines. Use of computer required. Prerequisite: CMPSCI 187 or equivalent.

250 Introduction to Computation (both sem) 4 cr

Basic mathematical paradigms essential for computer science. Propositional and predicate calculus. Sets, formal languages, relations, and functions. Inductive definition, recursive algorithms, and mathematical induction. Elementary combinatorics. Basic definitions of graph theory. Finite-state machines, regular languages, equivalence of these, proving languages not regular. Prerequisite: CMPSCI 187 or consent of instructor. Corequisite:MATH 132/136 or equivalent.

287 Programming Language Paradigms (both sem) 4 cr

Introduction to four major programming paradigms (functional, imperative, logic, and object-oriented) using the Scheme language (a dialect of the Lisp language). Comparison of paradigms. Implementations of important data structures in Scheme. The Lisp interpreter. Development of methods to reason about programs. Prerequisite: CMPSCI 187. Corequisites: CMPSCI 250 and MATH 132.

305 Social Issues in Computing (both sem)

Satisfies the Junior Year Writing requirement. The impact of computers on modern society. Prerequisites: CMPSCI major or premajor status; ENGLWP 112 or equivalent.

311 Introduction to Algorithms
(both sem) 4 cr

The design and analysis of efficient algorithms for important computational problems. Emphasis on the relationships between algorithms and data structures and on measures of algorithmic efficiency. Sorting (heapsort, mergesort, quicksort), searching, graph algorithms. Experimental analysis of algorithms also emphasized. Use of computer required. Prerequisite: CMPSCI 250.

320 Introduction to Software Engineering (both sem) 4 cr

A study of the program development life cycle and fundamental ideas of good programming practices. Topics include software requirements, specifications, design, program structure and style, testing, and program management. An introduction to proof of correctness, data abstraction, and program validation. Use of computer required. Prerequisite: CMPSCI 287.

377 Operating Systems (both sem) 4 cr

The design and operation of modern computer operating systems. Review of capabilities of typical computer hardware. Topics include command language interpreter (the shell), processes, concurrency, inter-process communication, linking and loading, file systems, security, and protection. Programming projects in C++ and UNIX. Prerequisites: CMPSCI 187, 201.

383 Artifical Intelligence (both sem)

Fundamental concepts in machine intelligence. Techniques for search, learning, representation, control, and formal reasoning. Study of selected landmark AI systems. Introduction to planning, natural language processing, and common-sense reasoning. Programming projects in Lisp. Prerequisites: CMPSCI 250, 287.

401 Formal Language Theory (2nd sem)

Introduction to formal language theory. Topics include finite state languages, context-free languages, the relationship between language classes and formal machine models, the Turing Machine model of computation, theories of computability, resource-bounded models, and NP-completeness. Prerequisites: CMPSCI 250, 311 or equivalent.

403 Introduction to Robotics and Intelligent Systems

Topics related to the design and analysis of intelligent robot systems. Mechanisms, actuators, vision, signals, control, learning, and path planning. Such systems implemented in simulators.

445 Information Systems (1st sem)

Introduction to database systems. File organization, database system architectures, data models, database design, relational systems, query optimization, recovery and concurrency control. Use of computer required. Prerequisite: CMPSCI 287.

453 Computer Networks (2nd sem)

Introduction to computer communication networks and protocols. Fundamental concepts in the design and analysis of computer networks. Topics include: layered network architectures, applications, network, programming interfaces, transport, congestion, routing, data link protocols, local area networks, emerging high-speed networks, network management, and network security. Examples drawn from the Internet (e.g., TCP, UDP, and IP) protocol suite. Prerequisite: CMPSCI 201 or equivalent.

491A Compiler Techniques (1st sem)

The basic problems in the translation of programming languages focusing on theory and common implementation techniques for compiling traditional (Pascal-like) programming languages to produce asssembly or object code for typical machines. Includes a substantial laboratory project in which the student constructs a working compiler for a considerable subset of a realistic programming language. Optional laboratory section covers details of the programming language used to build the compiler, the operating system, the source language, and various tools. Use of computer required. Prerequisites: CMPSCI 250, 377.

520 Software Engineering: Synthesis and Development (1st sem)

Systematic processes for creating high-quality software systems: requirements analysis, formal specification and software design methods, software architecture, process definition, and test planning. Complements CMPSCI 521. Prerequisite: CMPSCI 320 or consent of instructor.

521 Software Engineering: Analysis and Evaluation (2nd sem)

Introduction to the principal approaches for testing and evaluating software systems, particularly large, complex systems used in life-critical applications such as medical monitoring devices and air traffic control. Manual code inspection techniques (such as the cleanroom approach), formal specification and verification techniques, static and dynamic analysis approaches, software safety issues. Focus on analysis activities; complements CMPSCI 520. Prerequisite: CMPSCI 320 or consent of instructor.

530 Programming Languages (2nd sem)

The skills required to design and implement programming languages. The motivations and costs for various language facilities; the descriptive tools required to compare and evaluate programming language designs. Prerequisites: CMPSCI 287, 320, 377. Corequisite: CMPSCI 401.

535 Computer Architecture (1st sem)

The various elements of computer systems with particular reference to the historical influence of certain real computers and the concepts behind them. Computers studied from different levels of abstraction, including logic level, component level, and system level. Topics include logic circuits, memory devices, virtual memory, arithmetic, pipelines, caches, I/O, and an introduction to parallel processing. Prerequisites: CMPSCI 250, 377.

570 Computer Vision (2nd sem)

Basic techniques in computer vision. The theoretical development of basic image processing operations and their efficient implementation as building blocks of a computer vision system. Topics include the image formation process and digital representation of images; image filtering; extraction of regions and edges; measurement of image features such as color, texture, and shape; hardware/software architectures for image processing; and recovery of motion and depth information from multiple images. Prerequisites: linear algebra and basic computer skills.

585 Natural Language Processing (1st sem)

Introduction to natural language processing including conceptual dependency, predictive parsing, knowledge-based inference generation, and language-oriented models of memory. The relationship between syntax and semantics. Various task orientations including narrative text comprehension, question answering, summarization, and interactive discourse. Prerequisite: CMPSCI 383 or consent of instructor.

589 Machine Learning (2nd sem)

Introduction to methods permitting machines to learn: decision tree induction, cover generation, candidate elimination, artificial neural networks, inductive logic programming. Bayesian, instance-based, reinforcement, apprentice, macro, and explanation-based learning. Use of computer required. Prerequisite: CMPSCI 383.

591 Seminars

The department regularly offers 500-level seminar courses to undergraduates. Topics vary from year to year. A description of available seminars is published by the department before each semester. Many 600-level graduate courses are open to undergraduates. Students should consult the Graduate Bulletin for details.

551 3-D Animation and Digital Editing (both sem)

Students work alone and in teams to create high-quality publishable animated pieces using 3-dimensional graphics technology. Techniques include digital editing, sound, music, design, modeling, rendering, surfaces, textures, and lighting.

552 Interactive Multimedia Production
(both sem)

Students explore interactive authoring tools to develop presentation and training systems by using programming languages within professional packages to present graphics, animation, text, sound, and music based on user requests.

575 Combinatorics and Graph Theory

A basic introduction to combinatorics and graph theory for advanced undergraduates in computer science, mathematics, and related fields. Topics include elements of graph theory, Euler and Hamiltonian circuits, graph coloring, matching, basic counting methods, generating functions, recurrences, inclusion-exclusion, Polya's theory of counting.

Computer Science | Courses | Faculty