UMassCS Logo Donate to CS
 
 

Course Descriptions

CMPSCI 105: Computer Literacy (R2)

Professor: Verts

Microcomputers are now used widely in all areas of modern life. For this reason it's important that all students understand how computers work and how computers can be used as a problem-solving tool. The focus of this course is on computer applications. The course stresses the ways in which computers can help you solve problems efficiently and effectively. The course provides a broad introduction to hardware, software, and mathematical aspects of computers. Then four application areas are discussed: word processing, spreadsheets, databases and telecommunications (access to the Internet). Weekly lab assignments are an integral part of the course. There are optional lab times set up for students who do not have the proper equipment available to them. Students who are more interested in computer programming should take CMPSCI 121 or 187. Prerequisites: reasonable high school math skills. Typing ability is also an important asset for the course. Previous computer experience is not expected. Pre-registration is not available to majors and pre-majors. 3 credits.

CMPSCI 120: Introduction to Problem Solving with the Internet (R2)

Professor: Adrion

The Internet is a goldmine of information and software resources for those who know how to plug in and navigate it. Originally designed by computer scientists for computer scientists, the net is now a driving force behind life in the information age and a new global economy. This course will provide non-CMPSCI majors with timely skills needed to tap the net. We will cover Web browser features, e-mail management, Web page design, software downloads, strategies for finding information and virtual communities, and public key cryptography. In addition, we will survey key social and political topics that are relevant to the Internet, such as copyright laws, First Amendment issues, privacy in a digital world, and the culture of the Internet. Prerequisites: some hands-on experience with PCs or MACs or UNIX (programming experience is NOT required). CMPSCI majors and pre-majors may not pre-register. 3 credits.

CMPSCI 121: Introduction to Problem Solving with Computers (R2)

Professor: Moll

CMPSCI 121 provides an introduction to problem solving and computer programming using the programming language Java; it also provides an integrated introduction to some of the wonderful innovations to modern science and indeed modern life that can be attributed to computer science. The course teaches how real-world problems can be solved computationally using the object-oriented metaphor that underlies Java. Concepts and techniques covered include data types, expressions, objects, methods, top-down program design, program testing and debugging, state representation, interactive programs, data abstraction, conditionals, iteration, interfaces, inheritance, arrays, graphics, and GUIs. No previous programming experience required. A companion introduction to programming class, CMPSCI 119(191P) is also offered. If you are fairly sure you only want to do just one programming class, take that course; if you think it likely that you will do more than one programming course, take 121. Use of computer is required. Prerequisite: R1. 4 credits.

CMPSCI 145: Representing, Storing, and Retrieving Information

Professor: Verts

An introductory course in the use of data in computer systems, a core course for the Information Technology certificate. Formats for representing text, numbers, sound, images, etc., as strings of bits. Equations of lines and curves, modeling of synthetic scenes (i.e., ray tracing), exploring the frequency domain and holography. Basic information theory, use and limitations of file compression and encryption. Structured databases and how to use them. Information retrieval in heterogenous environments such as the Web. XML as a language for defining new formats for representing data. Review of historical, pre-computer methods of information representation. Prerequisites: "Basic computer literacy", i.e., user-level familiarity with a modern operating system and some experience with application programs. Tier I math skills. Recommended for First Year and Sophomore Non-Majors. Prerequisite: R1. 3 credits.

CMPSCI 187: Programming with Data Structures (R2)

Professor: Lehnert

The course introduces and develops methods for designing and implementing abstract data types using the Java programming language. The main focus is on how to build and encapsulate data objects and their associated operations. Specific topics include linked structures, recursive structures and algorithms, binary trees, balanced trees, and hash tables. There will be weekly assignments, consisting of programming and written exercises, a midterm, and a final exam. Prerequisites: CMPSCI 121 (or equivalent Java experience) and Basic Math Skills (R1). Basic Java language concepts are introduced quickly; if unsure of background, contact instructor. 4 credits.

CMPSCI 191A: Computer Science Majors RAP Seminar

Professor: Barrington

Conversations with members of the UMass CMPSCI community, to explore issues in and subareas of computer science. Open only to first-year students in the CMPSCI TAP residential program. This course does not count toward BS-CMPSCI without UPD Approval. 1 credit.

CMPSCI 191P: Introduction to Programming

Professor: Lehnert

The Internet has transformed computers from machines that calculate to machines that communicate. This introduction to computer programming with Python emphasizes multimedia (graphics and sound) applications that are relevant for Web designers, graphic artists, and anyone who just wants to have more fun with their computer. Students will explore basic concepts in computer science and computer programming by manipulating digital images and sound files. No prior programming experience is needed. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 197U: Special Topics - A Hands-on Introduction to UNIX

Professor: Levine, McCorkle, Wood

This course offers a 4-week introduction to working with Unix, and it is intended to help students work with tools commonly used in CS courses. The class is comprised of both discussion and hands-on exercises in the EdLab. Topics covered include working with the command line, installing and maintaining the OS and software packages, version control systems, compiling programs, and more. No previous experience with Unix is required. This course is for majors only, but it does not count towards the BS-CMPSCI. 1 credit.

CMPSCI 201: Architecture and Assembly Language (E)

Professor: Ganesan

Lecture, discussion, lab. The architecture and machine-level operations of modern computers at the logic, component, and system levels. Topics include integer, scaled, and floating point binary arithmetic; Boolean algebra and logic gates; control, arithmetic-logic, and pipeline units; addressing modes; cache, primary, and virtual memory; system buses; input-output and interrupts. Simple assembly language for a modern embedded processor is used to explore how common computational tasks are accomplished by a computer. Two lectures and one discussion per week. Laboratory exercises, homework exercises, in-class quizzes, two midterm exams, and a final exam. Prerequisite: CMPSCI 187 or ECE 242 or equivalent. 4 credits.

CMPSCI 220: Programming Methodology

Professor: Wileden

Development of individual skills necessary for designing, implementing, testing and modifying larger programs, including: advanced uses of integrated design environments, design strategies and patterns, testing, working with large code bases and libraries, code refactoring, use of debuggers and tools for version control, and system build tools. There will be a significant programming project, done in phases, and a mid-term and final examination. Prerequisite: CMPSCI 187. 3 credits.

CMPSCI 240: Reasoning About Uncertainty

Professor: Barrington

Development of mathematical reasoning skills for problems that involve uncertainty. Each concept will be illustrated by everyday, real-world examples and demonstrated through discussion and homework exercises, some of which will include programming. Graph definitions, counting, and basic probability (lottery games, poker hands). Mean, variance, normal and binomial distributions, statistical inference (analysis of baseball statistics). Brute-force exact calculation of probability, estimation of probability by Monte Carlo simulation (Texas Hold'em). Independence, conditional probability, Bayes' rule (medical and legal decision-making). Vectors and vector arithmetic, pattern classification (Spam filters). Matrices and matrix arithmetic, Path/Matrix Theorem, Markov processes, Markov decision processses (Backgammon and other games). CMPSCI 240 will become a required core course under the proposed new CMPSCI major requirements. Students following the existing requirements may use CMPSCI 240 to fill the "math elective" requirement. This may allow another math course to be used as a CMPSCI elective. Prerequisite: CMPSCI 187 and MATH 132. 3 credits.

CMPSCI 250: Introduction to Computation (E)

Professor: Rissland

Lecture, discussion. Basic concepts of discrete mathematics useful to computer science: set theory, strings and formal languages, propositional and predicate calculus, relations and functions, basic number theory. Induction and recursion: interplay of inductive definition, inductive proof, and recursive algorithms. Graphs, trees, and search. Finite-state machines, regular languages, nondeterministic finite automata, Kleene's Theorem. Problem sets, 2-3 midterm exams, timed final. Corequisite: MATH 132/136 or equivalent. Prerequisite: MATH 131 and (CMPSCI 187 or ECE 242). 4 credits.

CMPSCI 305: Social Issues in Computing

Professor: Constantine

Designed to satisfy the Junior Year writing requirement, CMPSCI 305 introduces the student to technical writing and editing, scientific journalism and the social essay. The course combines practical, scientific writing as found in industry and business with explorative essays that focus attention upon the technological and humanistic concerns inherent in society. Ten written assignments-two longer papers, eight shorter ones and one oral presentation. Prerequisite: ENGLWP 112 or CW. 3 credits.

CMPSCI 311: Introduction to Algorithms

Professor: Sitaraman

This course will introduce you to algorithms in a variety of areas of interest, such as sorting, searching, string-processing, and graph algorithms. You will learn to study the performance of various algorithms within a formal, mathematical framework. You will also learn how to design very efficient algorithms for many kinds of problems. There will be one or more programming assignments as well to help you relate the empirical performance of an algorithm to theoretical predictions. Mathematical experience (as provided by CMPSCI 250) is required. You should also be able to program in Java, C, or some other closely related language. Prerequisite: CMPSCI 250 or MATH 455. 4 credits.

CMPSCI 320: Introduction to Software Engineering

Professor: Osterweil

In this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semester-long team project in which a software development project is carried through all the stages of the software life cycle. Topics in this course include requirements analysis, specification, design, abstraction, programming style, testing, maintenance, communication, teamwork, and software project management. Particular emphasis is placed on communication and negotiation skills and on designing and developing maintainable software. Use of computer required. Several written assignments and in-class presentations, two exams, and a major term project. Prerequisite: CMPSCI 287. 4 credits.

CMPSCI 370: Introduction to Computer Vision

Professor: Learned-Miller

This introductory computer vision class will address fundamental questions about getting computers to "see" like humans. We investigate questions such as -What is the role of vision in intelligence? -How are images represented in a computer? -How can we write algorithms to recognize an object? -How can humans and computers "learn to see better" from experience? We will write a number of basic computer programs to do things like recognize handwritten characters, track objects in video, and understand the structure of images. 3 credits.

CMPSCI 377: Operating Systems

Professor: Berger

Large-scale software systems like Google - deployed over a world-wide network of hundreds of thousands of computers - have become a part of our lives. These are systems success stories - they are reliable, available ("up" nearly all the time), handle an unbelievable amount of load from users around the world, yet provide virtually instantaneous results. On the other hand, many computer systems don't perform nearly as well as Google - hence the now-cliché "the system is down." In this class, we study the scientific principles behind the construction of high-performance, scalable systems. The course begins with a discussion of the relevant features of modern architectures, and moves up the stack from there to operating system services such as programming language runtime systems, concurrency and synchronization, with a focus on key operating system features, I/O and networking, and distributed services. Prerequisites: CMPSCI 187 and (CMPSCI 201 or ECE 232). 4 credits.

CMPSCI 383: Artificial Intelligence

Professor: Hanson

This course explores key concepts of artificial intelligence, including knowledge representation, state-space search, and reasoning under uncertainty. We will examine how these concepts are applied in game playing and adaptive systems, two areas where AI concepts have proven to be extraordinarily successful. Prerequisites: CMPSCI 250, CMPSCI 287, and CMPSCI 311. 3 credits.

CMPSCI 391F: Seminar - Fundamentals of Graphic Communication

Professor: Woolf, Sindelar

This course provides an understanding of computer-based design and multimedia production. Basic concepts in the areas of graphic design, animation, video editing and object-oriented programming will be covered preparing students for more advanced studies in 2D and 3D animation and in multimedia programming. Course work consists mainly of several student projects, built incrementally as several smaller sub-projects. Each student s project will be presented via the World Wide Web and discussed in class. Students interaction is encouraged through peer reviews and in-class exercises. Topics include HTML, Cascading Style Sheets (CSS), file transfer, designing and drawing characters, image formats/image compression for the web, modeling and animation. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 391PC: Seminar - Problem Solving for the ACM Programming Contest

Professor: Learned-Miller

Each year, UMass sends one or more teams of undergraduates to compete in the ACM (Association for Computing Machinery) Programming Contest. The purpose of this 1-credit course is to give students a chance to practice the types of problems that appear in the programming contest. Students are not required to enter the contest to be in the course. However, it is likely that we will select a set of students from the course as our team for 2009. Problems can be done in either C++ or Java, which are the official languages of the Programming Contest. Each week students will be asked to solve one problem as homework, and we will share solutions during class. Meets once a week. This course does not count toward BS-CMPSCI without UPD Approval. 1 credit.

CMPSCI 397D: Special Topics - Interactive Web Programming

Professor: Woolf

This course teaches students how use the Adobe programs Flash and Flex. Students will learn how to build online videogames similar to those found on AddictingGames.com in Flash. Students also learn how to build database driven web applications in Flash and Flex. Individual projects are assigned every three weeks, as well as a final project at the end of the semester. To take this class you must have an understanding of programming concepts and techniques and also be a highly motivated learner. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 397E: Special Topics - Character Animation

Professor: Woolf

This class focuses exclusively on character animation techniques. Animation topics include action andpose, timing, overlap, pacing, and simulating and exaggerating physical laws. Constraints will be used to create animation and lipsync. Voice tracks will be used to simulate speech. Student will create their own final project or work in a small team. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 403: Introduction to Robotics: Mechanics, Dynamics, and Control

Professor: Grupen

This course covers basic methods and concepts in order to explain how robots work. We will study how they sense things in the world, how you make a robot move, and how robots can make their own decisions. We will study mechanisms (kinematics and dynamics), actuators, sensors, (with a focus on machine vision), signal processing, feedback control theory, associative memory, supervised and unsupervised learning, and path planning. Students will build software systems to control a simulated mobile manipulator and do experiments with system identification and control, image processing, and path planning to reinforce the material presented in class. 3 credits.

CMPSCI 445: Information Systems

Professor: Diao

Introduction to database management. Relational database topics include data modeling, query languages, database design, and query optimization. Alternative data management approaches will be covered, including semi-structured data, XML, and text retrieval. Application topics will include web data management, integration of data sources, security and privacy. Prerequisite: CMPSCI 287. 3 credits.

CMPSCI 453: Computer Networks

Professor: Venkataramani

This course provides an introduction to fundamental concepts in computer networks, including their design and implementation. Topics covered include the Web and other applications, transport protocols (providing reliability and congestion control), routing, and link access. Special attention is devoted to wireless and mobile systems, network gaming and other multimedia applications, and Internet security and privacy. Homework assignments involve programming and written tasks. Prerequisites: Experience programming (CMPSCI 220 or 287). 3 credits.

CMPSCI 460: Introduction to Computer and Network Security

Professor: Levine, Misra

This course provides an introduction to the principles and practice of system and network security. A focus on both fundamentals and practical information will be stressed. The three key topics of this course are cryptography, system security, and network security. Subtopics include ciphers, hashes, key exchange, security services (integrity, availability, confidentiality, etc.), security attacks, vulnerabilities, exploits, countermeasures. Students will make extensive use of a lab for experimenting with security countermeasures. Grades will be determined by class participation, lab work, homework, and exams. Prerequisites include 377 and a familiarity with Unix. 3 credits.

CMPSCI 473: Introduction to Computer Graphics

Professor: Wang

This course teaches the fundamentals of 2D and 3D computer graphics. Students will learn OpenGL and standard graphics algorithms. Specific topics covered include image processing, modeling, rendering, illumination, shadows, textures, and programmable shaders. The completion of this course will prepare students ready for any advanced computer graphics course. Students are expected to be familiar with basic linear algebra (vector and matrix arithmetic) and Java programming. 3 credits.

CMPSCI 491IP: Seminar - Programming the iPhone

Professor: Weems

The iPhone and iPod Touch present an example of a mobile processor with an interesting set of peripheral devices and limitations. They are programmed using Objective C and a large set of APIs. This seminar will be an introduction to the Objective C language and iPhone development environment, and will include student programming assignments and development projects targeting the Apple iPhone simulator. We will spend much of the class time actually working through examples, and discovering how some of the features really work. Students will need to have access to an Intel machine running OSX, because the development environment and simulator work only on that platform. Students also must join the Apple Developer Program, and accept their license agreements in order to obtain and use the necessary software. This course counts as a CmpSci Elective toward the CmpSci major. 3 credits.

CMPSCI 491OO: Seminar - Object Oriented Languages

Professor: Smaragdakis

The goal of the course is to give students an advanced background for both technical work and research involving object-oriented languages and systems. The course covers topics such as advanced Java/C++ language mechanisms, design patterns critique, aspect-oriented programming, OO frameworks, mixins, OO language implementation (compiler optimizations, virtual machine principles), type systems and genericity. This course counts as a CmpSci Elective toward BS-CMPSCI. 3 credits.

CMPSCI 503: Embedded Computing Systems

Professor:

Embedded computing applications do not require the same specifications as general purpose computational platforms, but are instead intimately related to a particular physical process. This course introduces tools necessary to design embedded computational applications. We will explore these applications by building autonomous mobile robots from scratch to accomplish a task that the class will design. Each student will design and build a project as part of a team that will be demonstrated at the end of the semester. The couse is heavily project-oriented (with a required lab) and discussions will include topics such as; (1) mechanisms, sensors, actuators and feedback systems, (2) analog and digital circuits, power amplifiers, signal processing, operational amplifiers, multiplexing, (3) I/O - A/D, D/A, and latching, serial and parallel interfaces, (4) signal processing/conditioning and (5) an introduction to real-time programming. 3 credits.

CMPSCI 513: Logic In Computer Science

Professor: Immerman

Rigorous introduction to mathematical logic from an algorithmic perspective. Topics include: Propositional logic: syntax, semantics, soundness and completeness of natural deduction and resolution; Horn clause satisfiability and SAT solvers; First Order Logic: syntax, semantics and definability; Soundness and completeness of natural deduction for First-Order Logic; Compactness Theorem and Resolution Theorem Proving for First-Order Logic; Logic Programming; Decidable theories, SAT Modulo Theories. 3 credits.

CMPSCI 521: Software Engineering: Analysis and Evaluation

Professor: Clarke

Software systems have become an integral part of our societal infrastructure. Software controls life-critical applications, such as air traffic control and medical devices, and is of central importance in telecommunication and electronic commerce. In this course, we will examine state of the art practices for testing and analyzing software systems that require high assurance. We will initially look at techniques developed for sequential systems but then examine the complexity that arises from distributed systems. In addition to homework assignments, students will be required to carry out an individual or group project that applies or extends some of the techniques described in class. No required text. Papers from the open literature will be assigned and made available. Prerequisites: CMPSCI 320, Introduction to Software Engineering (or equivalent course). 3 credits.

CMPSCI 529: Software Engineering Project Management

Professor: Osterweil

The purpose of this course is to provide students with practical experience in the management of software development projects. Students in this course will gain this experience by serving as software development team technical managers for teams of software engineering students in CMPSCI 320. As project managers, the students in CMPSCI 529 will be responsible for: supervising and managing the work of teams of CMPSCI 320 students; interfacing with the other CMPSCI 529 students managing other teams in the course; interfacing with the course instructor, course TA, and course customer. CMPSCI 529 students will be assigned readings in software engineering project management to provide a theoretical basis for their work in this course. But the majority of work in the course will be related to the actual management of assigned development teams. As team managers, CMPSCI 529 students will set goals and schedules for their teams, track and report team progress, negotiate with leaders of other teams and the course customer, and evaluate the work of members of their teams. CMPSCI 529 course assignments may include: written team goals, plans and schedules; periodic reports on team progress; documentation of agreements reached with other team leaders and customers; evaluations of the applicability of theoretical papers to the work of this course. This course will meet at the same times and places as CMPSCI 320. Additional meetings with team members and other students in CMPSCI 529 are also expected to be arranged by mutual agreement. Enrollment in this course is only by permission of the instructor, and is restricted to students who have previously taken CMPSCI 320, and received a grade of A or A-. 3 credits.

CMPSCI 585: Introduction to Natural Language Processing

Professor: Smith

The field of natural language processing is concerned with practical and theoretical issues that arise in getting computers to perform various tasks with human languages. In this introductory course you will learn about automated techniques for parsing sentences, tagging words according to their part-of-speech, encoding spelling rules, modeling language semantics, learning to filter junk email, clustering news articles by topic, and translating from one language into another. Our toolbox will contain algorithms, machine learning models, and linguistic concepts aimed at programming useful systems on real data. Whether you are interested in applications in information retrieval and data mining, in computational humanities, or in modeling the human language faculty, this course will help you on your way. 3 credits.

CMPSCI 591G: Seminar - Computer Networking Lab

Professor:

In this course, students will learn how to put "principles into practice," in a hands-on-networking lab course. The course will cover router and end-system labs in the areas of Single Segment IP Networks, Multiple Segment IP Networks and Static Routing, Dynamic Routing Protocols (RIP, OSPF and BGP), LAN switching, Transport Layer Protocols: UDP and TCP, NAT, DHCP, DNS, and SNMP. The labs are due at a rate of roughly one lab per week. A short pre-lab Q&A, as well as lab writeups, are required for each lab. These labs will be done in a networked lab setting consisting of 4 Cisco2600-family routers, 4 hubs, and 4 Linux hosts. The textbook is Mastering Networks: An Internet Lab Manual by Jorg Lieberherr, University of Virginia; Magda El Zarki, University of California, Irvine. ISBN: 0-201-78134-4. Publisher: Addison-Wesley. This course counts as a CmpSci Elective toward BS-CMPSCI. 3 credits.

CMPSCI 591O: Seminar - Character Animation

Professor: Woolf

This class focuses exclusively on character animation techniques. Animation topics include action andpose, timing, overlap, pacing, and simulating and exaggerating physical laws. Constraints will be used to create animation and lipsync. Voice tracks will be used to simulate speech. Student will create their own final project or work in a small team. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 591U: Seminar - Interactive Web Programming

Professor: Woolf

This course teaches students how use the Adobe programs Flash and Flex. Students will learn how to build online videogames similar to those found on AddictingGames.com in Flash. Students also learn how to build database driven web applications in Flash and Flex. Individual projects are assigned every three weeks, as well as a final project at the end of the semester. To take this class you must have an understanding of programming concepts and techniques and also be a highly motivated learner. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 596C: Independent Study - TA for CMPSCI 591O Seminar-Character Animation

Professor: Woolf

TAs are responsible for providing assistance to the instructor and students of CMPSCI 591O Seminar-Character Animation. Activities will include critiquing students work and providing useful feedback. Grading the class projects and homework assignments, and spending at least 6 hours each week in the laboratory to help the students with their daily work for the class. Evaluation will be done by the instructor based upon the quality of assistance to the students, attendance at the lectures and hours spent in the animation laboratory. Grading will also be based on advanced projects by the student and presented at the end of the semester. Prerequisite: CMPSCI 591O with grade of B or better. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 596D: Independent Study - Advanced Computer Modeling

Professor: Woolf

This course focuses on production of high quality models, beginning with simple vases, desks, lamps and moving to character and humanoids. Students will model organic shapes, such as fruit, using splines, lathes, and extrudes. Surfacing topics such as specularity, reflection, transparency, glow, decals and image maps will be discussed and modeled. Texture and advanced lighting techniques will be developed. Students will develop humanoid characters, modeling torso, shoulders, pelvis, arms, legs and hands feet and eyeballs. Geometry bones will be added to the final characters along with kinematic constraints and Euler Limits. The character's face will "lip sync" to speak or sing. Students will also create low patch proxy models of their characters to be used for blocking and simple motion within a final animation. These characters will be rigged for animation and the models given to students in the Animation Class for creation of the final project. Students will complete five independent modeling assignments and a final project in which their characters are animated by the Animation Class. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 611: Advanced Algorithms

Professor: McGregor

Principles underlying the design and analysis of efficient algorithms. Topics to be covered include: divide-and-conquer algorithms, graph algorithms, matroids and greedy algorithms, randomized algorithms, NP-completeness, approximation algorithms, linear programming. Prerequisites: The mathematical maturity expected of incoming Computer Science graduate students, knowledge of algorithms at the level of CMPSCI 311. 3 credits.

CMPSCI 621: Advanced Software Engineering: Analysis and Evaluation

Professor: Clarke

Software systems have become an integral part of our societal infrastructure. Software controls life-critical applications, such as air traffic control and medical devices, and is of central importance in telecommunication and electronic commerce. In this course, we will examine state of the art practices for testing and analyzing software systems that require high assurance. We will initially look at techniques developed for sequential systems but then examine the complexity that arises from distributed systems. In addition to homework assignments, students will be required to carry out an individual or group project that applies or extends some of the techniques described in class. No required text. Papers from the open literature will be assigned and made available. Prerequisites: CMPSCI 320, Introduction to Software Engineering (or equivalent course). 3 credits.

CMPSCI 646: Information Retrieval

Professor: Allan

The course will cover basic and advanced techniques for text-based information systems. Topics covered include retrieval models, indexing and text representation, browsing and query reformulation, data-intensive computing approaches, evaluation, and issues surrounding implementation. The course will include a substantial project such as the implementation of major elements of search engines and applications. Prerequisite: CMPSCI 446, 445, or equivalent. 3 credits.

CMPSCI 653: Advanced Computer Networking

Professor: Towsley

This course covers advanced fundamental principles of computer networks, studying foundational material in the field. Topics include protocol mechanisms and implementation principles, protocol specification/verification techniques, network algorithmics, advanced network architecture, network simulation, performance analysis, and measurement. Prerequisites: introductory (undergraduate level) courses in computer networks (e.g., CMPSCI 453/591,), operating systems (e.g., CMPSCI 377), and algorithms (e.g., CMPSCI 311). Some familiarity with probability will also be needed. 3 credits.

CMPSCI 677: Operating Systems

Professor: Shenoy

This course provides an in-depth examination of the principles of distributed systems in general, and distributed operating systems in particular. Covered topics include processes and threads, concurrent programming, distributed interprocess communication, distributed process scheduling, virtualization, distributed file systems, security in distributed systems, distributed middleware and applications such as the web and peer-to-peer systems. Some coverage of operating system principles for multiprocessors will also be included. A brief overview of advanced topics such as multimedia operating systems and mobile computing will be provided, time permitting. Prerequisites: Students should be able to easily program in a high-level language such as C, have had a course on data structures, be familiar with elements of computer architecture and have had previous exposure to the operating system concepts of processes, virtual memory, and scheduling. A previous course on uniprocessor operating systems (e.g., CMPSCI 377) will be helpful but not required. 3 credits.

CMPSCI 683: Artificial Intelligence

Professor: Zilberstein

In-depth introduction to Artificial Intelligence focusing on techniques that allow intelligent systems to operate in real-time and cope with missing information, uncertainty, and limited computational resources. Topics include: advanced search and problem-solving techniques, resource-bounded search, principles of knowledge representation and reasoning, meta-reasoning, reasoning under uncertainty, Bayesian networks and influence diagrams, decision theory and the value of information, planning and scheduling, intelligent agents architectures, and learning. Prerequisites: Undergraduate background in Computer Science, and an undergraduate Artificial Intelligence course (CMPSCI 383 or equivalent). 3 credits.

CMPSCI 689: Machine Learning

Professor: Mahadevan

Machine learning is the computational study of methods for making statistically reliable inferences combining observed data and prior knowledge (models). This is a mathematically rigorous introduction to two major strands of research in machine learning: parametric approaches based on probabilistic graphical models, and nonparametric approaches based on kernel methods. Graphical models are a compact way of representing probability distributions over a large set of discrete and continuous variables. "Learning" in parametric models corresponds to maximum likelihood estimation, i.e. find the parameters that maximize the likelihood of the data. By contrast, "learning" in nonparametric kernel-based models corresponds to finding a weighted sum of kernel functions applied to the data. Detailed course topics: mathematical foundations, Bayesian classifiers, maximum likelihood and maximum a posteriori (MAP) estimation, missing data and expectation maximization (EM), mixture models and hidden-Markov models, logistic regression and generalized linear models, maximum entropy and undirected graphical models, nonparametric models for density estimation, reproducing kernel Hilbert spaces and the Representer theorem, margin classifiers and support vector machines, dimensionality reduction methods (PCA and LDA), computational learning theory, VC-dimension theory. State-of-the-art applications including bioinformatics, information retrieval, robotics, sensor networks and vision, will be used to illustrate the theory. There will be extensive homework exercises including mini-projects, a midterm, a final exam, and a group project. Prerequisites: undergraduate level probability and statistics, linear algebra, calculus, AI; computer programming in some high level language. 3 credits.

CMPSCI 691GC: Seminar - Green Computing

Professor: Shenoy, Kurose, Kermani

Green Computing is the science of designing carbon-efficient hardware and software as well as the use of computing to make physical infrastructure more carbon-efficient. This seminar will focus both on 'greening of computing'---the design of green servers, storage and networks---as well on 'computing for greening'---the use of sensor networks and computing for estimating and reducing the carbon footprint of physical infrastructure such as buildings. We will also cover related topics such as green energy, e.g., solar and wind, and smart-grids, and their use in the computing context. A collection of papers describing the state-of-the art in the field will be made available to students. Students will be required to present and review papers, participate in class discussions, and complete a project on a relevant topic of interest. Course grades will be based on class presentations and participation, written paper reviews, and an independent research project. 1 or 3 credits (the 3 credit version will require a course project).

CMPSCI 691O: Seminar - Tools for Explanatory and Tutoring Systems

Professor: Woolf

This seminar examines recent work in explanatory and tutoring systems. Participants study artificial intelligence in education, a young field that explores theories about learning, and explores how to build software that delivers differential teaching as it adapt its response to student needs and domain knowledge. Such software supports people who work alone or in collaborative inquiry, students who question their own knowledge, and students who rapidly access and integrate global information. This course describes how to build these tutors and how to produce the best possible learning environment, whether for classroom instruction or lifelong learning. The objective of the course is to stimulate awareness of research issues and to promote sound analytic and design skills as they pertain to building knowledge representations and control strategies. Specific topics include collaboration, inquiry, dialogue systems, machine learning, simulators, authoring tools and user models. The course is appropriate for students from many disciplines (computer science, linguistics, education, and psychology), researchers, and practitioners from academia, industry, and government. No programming is required. Students read and critique tools, methods, and ideas, learn how artificial intelligence is applied (e.g., vision, natural language), and study the complexity of human learning through advances in cognitive science. Weekly assignments invite students to critique the literature and a final project requires a detailed specification (not a program) for a tutor about a chosen topic. Students present book chapter material weekly in parallel with readings from the research literature. Several working systems will be available for hands-on critique. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 691OO: Seminar - Object Oriented Languages

Professor: Smaragdakis

The goal of the course is to give students an advanced background for both technical work and research involving object-oriented languages and systems. The course covers topics such as advanced Java/C++ language mechanisms, design patterns critique, aspect-oriented programming, OO frameworks, mixins, OO language implementation (compiler optimizations, virtual machine principles), type systems and genericity. 3 credits.

CMPSCI 701: Advanced Topics in Computer Science

Professor: Allan

This is a 6 credit reading course corresponding to the master s project. The official instructor is the GPD although the student does the work with and is evaluated by the readers of his or her master s project.

CMPSCI 741: Complexity Theory

Professor:

The study of the resources required to solve different problems in various abstract models of computation. Sequential computation: Turing machines, non-determinism, alternation, algebraic automaton theory. Parallel computation: Boolean circuits, branching programs, uniformity. Lower bounds for circuit models. Descriptive Complexity. Possible optional topics depending on student interest: Approximation of NP-complete problems, interactive proofs, non-uniform finite automata, dynamic complexity. Prerequisite: CMPSCI 601 or permission of instructor. Intended for interested general graduate students as well as those concentrating in theory. Course format: Probably 2-3 problem sets, class presentation (may be survey or actual research, might lead to a synthesis paper). Textbook: Xeroxed notes and research papers. 3 credits.

CMPSCI 791EE: Seminar - Advanced Topics in Computational Geometry

Professor: Streinu

This is a reading seminar on current papers in combinatorial and computational geometry, with an emphasis on recent applications of rigidity theory. We will focus on algorithms for flexibility, reconfiguration, and enumeration of structures defined by geometric constraints. They include bar-and-joint frameworks, body-bar structures, polyhedra, and structures inspired by applications in biology and computer aided design. Prerequisite of computational geometry required. May be taken up to 2 times for credit. 3 credits.

CMPSCI 791LL: Seminar - The Grant Process: From Solicitation to Award

Professor: Rissland

In this seminar, participants will get in-depth experience with the process of scoping out, writing, and reviewing grant proposals for award-granting agencies like NSF. We will examine the process from beginning to end: developing ideas for a project, finding and reading appropriate solicitations, framing a proposed project, writing project summaries and narratives, fulfilling particular solicitation and general requirements, reviewing projects, interpreting reviews and panel summaries, etc. Each seminar participant will write a scaled down version of a grant proposal, and participate in a moot review panel, in which all participants possibly plus some faculty, will form a review panel to review and discuss the proposals in a manner similar to NSF panels. Prerequisite: Successfully completed defense of dissertation proposal. 3 credits.

CMPSCI 791U: Seminar - Advanced Topics in Information Retrieval

Professor: Croft

A seminar in which students will read, present, and discuss research papers on recent and important topics in Information Retrieval. Students are expected to lead one or more discussions throughout the semester. May be taken up to 2 times for credit. 3 credits.

CMPSCI 891M: Theory of Computation

Professor: Barrington

The theory seminar is a weekly meeting in which topics of interest in the theory of computation - broadly construed - are presented. This is sometimes new research by visitors or local people. It is sometimes work in progress, and it is sometimes recent material of others that some of us present in order to learn and share. This is a one-credit seminar which may be taken repeatedly for credit up to six times.

CMPSCI 899: PhD Dissertation

Professor: Staff

CMPSCI H120: Honors Colloquium for CMPSCI 120

Professor: Adrion

This 1-credit Honors course is designed to combine community service learning with a mechanism for reinforcing learning through tutoring. The Honors students will tutor students at Holyoke Community College (HCC) enrolled in a one-hour-per-week, seven-week Web design class, IT is all about me. The HCC curriculum is similar to that of CMPSCI 120, but with much less depth and a focus on developmental students. The Honors students will work with minority and/or non-native-English speakers in a course for students with weak college preparation, but with the intent to introduce students to the Web and to encourage students to move on to IT majors. Tutoring will occur at 2-3 in-person visits to HCC and via phone, email, text messaging, etc. It is expected that tutoring HCC students will reinforce learning of CMPSCI 120 content. Each student will attend a two-day training session at the Learning Resource Center and take a refresher course every month. Students will prepare a self-reflexive paper that discusses the tutoring experience, comments, outcomes and suggestions about the experience and improvements. As a prerequisite, students must be currently enrolled in or have previously taken CMPSCI 120. Students fluent in Spanish or Russian particularly are encouraged to enroll. 1 credit.

CMPSCI H220: Honors Colloquium for CMPSCI 220

Professor: Wileden

Students will meet for one hour per week with the professor to work on additional application of, or topics related to, the course material. Depending on the interests of the group, we may undertake projects involving refactoring of research software or enhancements to the course software or investigation of more design patterns or some other activity relevant to CMPSCI 220. 1 credit.

CMPSCI H320: Honors Colloquium for CMPSCI 320

Professor: Osterweil

In this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semester-long team project in which a software development project is carried through all the stages of the software life cycle. Honors students will be expected to assume responsibility for some of the more complex aspects of the project as well as to study more advanced concepts. 1 credit.

CMPSCI H383: Honors Colloquium for CMPSCI 383

Professor: Hanson

Students will study in greater depth one of the AI problem solving techniques covered in class. Activities include discussions with the professor and TA, readings, and a project. Specific topics depend on student interest but may include game playing, heuristic search, and automated planning. 1 credit.


Last automatic generation: 5/18/2011 at 10:17:30 AM