WPI Courses
CS 1101: Introduction to Program Design
This course introduces principles of computation and programming with an emphasis on program design. Topics include the design, implementation and testing of programs that use a variety of data structures (such as structures, lists, and trees), functions, conditionals, recursion and higher--?order functions. Students will be expected to design simple data models, and implement and debug programs in a functional programming language.
CS 2011: Introduction to Machine Organization and Assembly Language
This course introduces students to the structure and behavior of modern digital computers and the way they execute programs. Machine organization topics include the Von Neumann model of execution, functional organization of computer hardware, the memory hierarchy, caching performance, and pipelining. Assembly language topics include representations of numbers in computers, basic instruction sets, addressing modes, stacks and procedures, low-level I/O, and the functions of compilers, assemblers, linkers, and loaders. The course also presents how code and data structures of higher-level languages are mapped into the assembly language and machine representations of a modern processor. Programming projects will be carried out in the C language and the assembly language of a modern processor.
CS 2102: Object-Oriented Design Concepts
This course introduces students to an object-oriented model of programming. Building from the design methodology covered in CS 1101/CS 1102, this course shows how programs can be decomposed into classes and objects. By emphasizing design, this course shows how to implement small defect-free programs and evaluate design decisions to select an optimal design under specific assumptions. Topics include inheritance, exceptions, interface, design by contract, basic design patterns, and reuse. Students will be expected to design, implement, and debug object-oriented programs composed of multiple classes and over a variety of data structures.
CS 2223: Algorithms
Building on a fundamental knowledge of data structures, data abstraction techniques, and mathematical tools, a number of examples of algorithm design and analysis, worst case and average case, will be developed. Topics include greedy algorithms, divide-and-conquer, dynamic programming, heuristics, and probabilistic algorithms. Problems will be drawn from areas such as sorting, graph theory, and string processing. The influence of the computational model on algorithm design will be discussed. Students will be expected to perform analysis on a variety of algorithms.
CS 2303: Systems Programming Concepts
This course introduces students to a model of programming where the programming language exposes details of how the hardware stores and executes software. Building from the design concepts covered in CS 2102, this course covers manual memory management, pointers, the machine stack, and input/ output mechanisms. The course will involve large-scale programming exercises and will be designed to help students confront issues of safe programming with system-level constructs. The course will cover several tools that assist programmers in these tasks. Students will be expected to design, implement, and debug programs in C++ and C. The course presents the material from CS 2301 at a fast pace and also includes C++ and other advanced topics.
CS 3013: Operating Systems
This course provides the student with an understanding of the basic components of a general-purpose operating system. Topics include processes, process management, synchronization, input/output devices and their programming, interrupts, memory management, resource allocation, and an introduction to file systems. Students will be expected to design and implement a large piece of system software in the C programming language.
CS 3431: Database Systems I
This course introduces the student to the design, use, and application of database management systems. Topics include the relational data model, relational query languages, design theory, and conceptual data design and modeling for relational database design. Techniques that provide for data independence, and minimal redundancy will be discussed. Students will be expected to design and implement database system applications.
CS 3516: Computer Networks
This course provides a broad view of computer networks. The course exposes students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. The objective is to focus on an understanding of fundamental concepts of modern computer network architecture from a design and performance perspective. Topics covered include: physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic and network security. Students will be expected to do extensive systems/network programming and will be expected to make use of simulation and measurement tools to gain an appreciation of current network design and performance issues.
CS 3733: Software Engineering
This course introduces the fundamental principles of software engineering. Modern software development techniques and life cycles are emphasized. Topics include requirements analysis and specification, analysis and design, architecture, implementation, testing and quality, configuration management, and project management. Students will be expected to complete a project that employs techniques from the topics studied. This course should be taken before any course requiring a large programming project.
CS 4120: Analysis Of Algorithms
This course develops the skill of analyzing the behavior of algorithms. Topics include the analysis, with respect to average and worst case behavior and correctness, of algorithms for internal sorting, pattern matching on strings, graph algorithms, and methods such as recursion elimination, dynamic programming, and program profiling. Students will be expected to write and analyze programs.
CS 4233: Objects-Oriented Analysis And Design
This Software Engineering course will focus on the process of Object-Oriented Analysis and Design. Students will be expected to complete a large number of exercises in Domain Modeling, Use Case Analysis, and Object-Oriented Design. In addition, the course will investigate Design Patterns, which are elements of reusable object-oriented software designs. This course will survey a set of design patterns and consider how these patterns are described and used to solve design problems.
CS 4341: Introduction to Artificial Intelligence
This course studies the problem of making computers act in ways which we call "intelligent". Topics include major theories, tools and applications of artificial intelligence, aspects of knowledge representation, searching and planning, and natural language understanding. Students will be expected to complete projects which express problems that require search in state spaces, and to propose appropriate methods for solving the problems.
CS 539: Machine Learning
The focus of this course is machine learning for knowledge-based systems. It will include reviews of work on similarity-based learning (induction), explanation-based learning, analogical and case-based reasoning and learning, and knowledge compilation. It will also consider other approaches to automated knowledge acquisition as well as connectionist learning.
CS 541: Deep Learning
This course will offer a mathematical and practical perspective on artificial neural networks for machine learning. Students will learn about the most prominent network architectures including multilayer feedforward neural networks, convolutional neural networks (CNNs), auto-encoders, recurrent neural networks (RNNs), and generative adversarial networks (GANs). This course will also teach students optimization and regularization techniques used to train them -- such as backpropagation, stochastic gradient descent, dropout, pooling, and batch normalization. Connections to related machine learning techniques and algorithms, such as probabilistic graphical models, will be explored. In addition to understanding the mathematics behind deep learning, students will also engage in hands-on course projects. Students will have the opportunity to train neural networks for a wide range of applications, such as object detection, facial expression recognition, handwriting analysis, and natural language processing.
RBE 1001: Introduction to Robotics
Multidisciplinary introduction to robotics, involving concepts from the fields of electrical engineering, mechanical engineering and computer science. Topics covered include sensor performance and integration, electric and pneumatic actuators, power transmission, materials and static force analysis, controls and programmable embedded computer systems, system integration and robotic applications. Laboratory sessions consist of hands-on exercises and team projects where students design and build mobile robots.
RBE 2001: Unified Robotics I
First of a four-course sequence introducing foundational theory and practice of robotics engineering from the fields of computer science, electrical engineering and mechanical engineering. The focus of this course is the effective conversion of electrical power to mechanical power, and power transmission for purposes of locomotion, and of payload manipulation and delivery. Concepts of energy, power and kinematics will be applied. Concepts from statics such as force, moments and friction will be applied to determine power system requirements and structural requirements. Simple dynamics relating to inertia and the equations of motion of rigid bodies will be considered. Power control and modulation methods will be introduced through software control of existing embedded processors and power electronics. The necessary programming concepts and interaction with simulators and Integrated Development Environments will be introduced. Laboratory sessions consist of hands-on exercises and team projects where students design and build robots and related sub-systems.
RBE 2002: Unified Robotics II
Second of a four-course sequence introducing foundational theory and practice of robotics engineering from the fields of computer science, electrical engineering and mechanical engineering. The focus of this course is interaction with the environment through sensors, feedback and decision processes. Concepts of stress and strain as related to sensing of force, and principles of operation and interface methods for electronic transducers of strain, light, proximity and angle will be presented. Basic feedback mechanisms for mechanical systems will be implemented via electronic circuits and software mechanisms. The necessary software concepts will be introduced for modular design and implementation of decision algorithms and finite state machines. Laboratory sessions consist of hands-on exercises and team projects where students design and build robots and related sub-systems.
RBE 3001: Unified Robotics III
Third of a four-course sequence introducing foundational theory and practice of robotics engineering from the fields of computer science, electrical engineering and mechanical engineering. The focus of this course is actuator design, embedded computing and complex response processes. Concepts of dynamic response as relates to vibration and motion planning will be presented. The principles of operation and interface methods various actuators will be discussed, including pneumatic, magnetic, piezoelectric, linear, stepper, etc. Complex feedback mechanisms will be implemented using software executing in an embedded system. The necessary concepts for real-time processor programming, re-entrant code and interrupt signaling will be introduced. Laboratory sessions will culminate in the construction of a multi-module robotic system that exemplifies methods introduced during this course.
RBE 3002: Unified Robotics IV
Fourth of a four-course sequence introducing foundational theory and practice of robotics engineering from the fields of computer science, electrical engineering and mechanical engineering. The focus of this course is navigation, position estimation and communications. Concepts of dead reckoning, landmark updates, inertial sensors, and radio location will be explored. Control systems as applied to navigation will be presented. Communication, remote control and remote sensing for mobile robots and tele-robotic systems will be introduced. Wireless communications including wireless networks and typical local and wide area networking protocols will be discussed. Considerations will be discussed regarding operation in difficult environments such as underwater, aerospace, hazardous, etc. Laboratory sessions will be directed towards the solution of an open-ended problem over the course of the entire term.
RBE 510: Multi-Robot Systems
This course covers the foundation and principles of multi-robot systems. The course will cover the development of the field and provide an overview on different control architectures (deliberative, reactive, behavior-based and hybrid control), control topologies, and system configurations (cellular automata, modular robotic systems, mobile sensor networks, swarms, heterogeneous systems). Topics may include, but are not limited to, multi-robot control and connectivity, path planning and localization, sensor fusion and robot informatics, task-level control, and robot software system design and implementation. These topics will be pursued through independent reading, class discussion, and a course project. The course will culminate in a group project focusing on a collaborative/cooperative multi-robot system. The project may be completed through simulation or hands-on experience with available robotic platforms. Groups will present their work and complete two professional-quality papers in IEEE format.
RBE 595: Advanced Surgical Robotics
In RBE595-Advanced Surgical Robotics you will learn about the most recent advances in surgical robot technology, and how these advances enable new treatment options for medical conditions that are currently considered inoperable. Topics covered in the course will include: design and control of surgical robotic instruments (with special emphasis on continuum designs), surgeon-robot interaction, supervised surgical robot autonomy, image-guided navigation. In addition to technical lectures, the course involves monthly invited seminars from physicians who provide an overview of select clinical procedures and share their perspective on how robotics can help enhance interventional processes for the benefit of patients.The course culminates in a final team project aimed to develop a grant proposal for a new medical robot. The project typically involves collecting preliminary data and/or working on new designs/simulations to support the scientific rationale of the proposal. The proposal is in the National Institutes of Health (NIH) R21 format.
ECE 2029: Introduction to Digital Circuit Design
Digital circuits are the foundation upon which the computers, cell phones, and calculators we use every day are built. This course explores these foundations by using modern digital design techniques to design, implement and test digital circuits ranging in complexity from basic logic gates to state machines that perform useful functions like calculations, counting, timing, and a host of other applications. Students will learn modern design techniques, using a hardware description language (HDL) such as Verilog to design, simulate and implement logic systems consisting of basic gates, adders, multiplexers, latches, and counters. The function and operation of programmable logic devices, such as field programmable gate arrays (FPGAs), will be described and discussed in terms of how an HDL logic design is mapped and implemented. Experiments involving the design of combinational and sequential circuits will provide students a hands-on introduction to basic digital electrical engineering concepts and the skills needed to gain more advanced skills. In the laboratory, students will construct, troubleshoot, and test the digital circuits that they have developed using a hardware description language. These custom logic designs will be implemented using FPGAs and validated using test equipment. Topics: Number representations, Boolean algebra, design and simplification of combinational circuits, arithmetic circuits, analysis and design of sequential circuits, and synchronous state machines. Lab exercises: Design, analysis and construction of combinational and sequential circuits; use of hardware description languages to implement, test, and verify digital circuits; function and operation of FPGAs.
ECE 2049: Embedded Computing In Engineering Design
Embedded computers are literally everywhere in modern life. On any given day we interact with and depend on dozens of small computers to make coffee, run cell phones, take pictures, play music, control elevators, manage the emissions and antilock brakes in our automobile, control a home security system, and so on. Using popular everyday devices as case studies, students in this course are introduced to the unique computing and design challenges posed by embedded systems. Students will then solve real-world design problems using small, resource constrained (time/memory/power) computing platforms. The hardware and software structure of modern embedded devices and basic interactions between embedded computers and the physical world will also be covered in lecture and as part of laboratory experiments. In the laboratory, emphasis is placed on interfacing embedded processors with common sensors and devices (e.g. temperature sensors, keypads, LCD display, SPI ports, pulse width modulated motor controller outputs) while developing the skills needed to use embedded processors in systems design. This course is also appropriate for RBE and other engineering and CS students interested in learning about embedded system theory and design. Topics: Number/data representations, embedded system design using C, microprocessor and microcontroller architecture, program development and debugging tools for a small target processor, hardware/software dependencies, use of memory mapped peripherals, design of event driven software, time and resource management, applications case studies. Lab Exercises: Students will solve commonly encountered embedded processing problems to implement useful systems. Starting with a requirements list students will use the knowledge gained during the lectures to implement solutions to problems which explore topics such as user interfaces and interfacing with the physical world, logic flow, and timing and time constrained programming. Exercises will be performed on microcontroller and/or microprocessor based embedded systems using cross platform development tools appropriate to the target platform.
ME 1800: Manufacturing Science, Prototyping, and Computer Controlled Machining
This course introduces students to manufacturing science and engineering and prototype part production. It emphasizes CNC (computer-controlled) machining. Students will learn how to go from a solid (CAD, computer-aided design) model to a machined part, using CAM software (computer-aided manufacturing) and CNC machining. They will also be exposed to associated issues in manufacturing process analysis, engineering design, material science, and in dimensional and surface metrology. Using machining as an example, the science of manufacturing processes is developed in a combination of class work and laboratory experience. The laboratory experience includes an experimental component that relates process variables in machining with performance and machined part quality. Students whose project work will necessitate fabrication of parts and those who want a background in manufacturing process science and engineering should take this course.
ES 2001: Introduction to Materials Science
This beginning course provides important background for all science and engineering disciplines regarding the capabilities and limitations of materials in our everyday lives. Students are introduced to the fundamental theme of materials science-- structure-property-processing relationships?in metals, ceramics, and plastics. Aspects of material structure range from the atomic to microstructural and macroscopic scales. In turn, these structural features determine the properties of materials. In particular, this course investigates connections between structure and mechanical properties, and how working and thermal treatments may transform structure and thus alter material properties. This knowledge is then applied to material selection decisions.
ES 2501: Introduction to Static Systems
This is an introductory course in the engineering mechanics sequence that serves as a foundation for other courses in mechanical engineering. The course covers general two- and three-dimensional force and couple systems, distributed loads, resultant forces, moments of forces, free body diagrams, equilibrium of particles and finite sized bodies. Specific topics include friction, trusses, shear forces, bodies subjected to distributed loads, bending moments in beams, and first and second moments of plane areas.
ES 3011: Control Engineering 1
Characteristics of control systems. Mathematical representation of control components and systems. Laplace transforms, transfer functions, block and signal flow diagrams. Transient response analysis. Introduction to the root-locus method and stability analysis. Frequency response techniques including Bode, polar, and Nichols plots.
MA 1023: Calculus III
This course provides an introduction to series, parametric curves and vector algebra. Topics covered include: numerical methods, indeterminate forms, improper integrals, sequences, Taylor's theorem with remainder, convergence of series and power series, polar coordinates, parametric curves and vector algebra.
MA 1024: Calculus IV
This course provides an introduction to multivariable calculus. Topics covered include: vector functions, partial derivatives and gradient, multivariable optimization, double and triple integrals, polar coordinates, other coordinate systems and applications.
MA 2051: Ordinary Differential Equations
This course develops techniques for solving ordinary differential equations. Topics covered include: introduction to modeling using first-order differential equations, solution methods for linear higher-order equations, qualitative behavior of nonlinear first-order equations, oscillatory phenomena including spring-mass system and RLC-circuits and Laplace transform. Additional topics may be chosen from power series method, methods for solving systems of equations and numerical methods for solving ordinary differential equations.
MA 2071: Matrices and Linear Algebra I
This course provides a study of computational techniques of matrix algebra and an introduction to vector spaces. Topics covered include: matrix algebra, systems of linear equations, eigenvalues and eigenvectors, least squares, vector spaces, inner products, and introduction to numerical techniques, and applications of linear algebra.
MA 2611: Applied Statistics I
This course is designed to introduce the student to data analytic and applied statistical methods commonly used in industrial and scientific applications as well as in course and project work at WPI. Emphasis will be on the practical aspects of statistics with students analyzing real data sets on an interactive computer package. Topics covered include analytic and graphical representation of data, exploratory data analysis, basic issues in the design and conduct of experimental and observational studies, the central limit theorem, one and two sample point and interval estimation and tests of hypotheses.
MA 2631: Probability
The purpose of this course is twofold: - To introduce the student to probability. Topics to be covered will be chosen from: axiomatic development of probability; independence; Bayes theorem; discrete and continuous random variables; expectation; special distributions including the binomial and normal; moment generating functions; multivariate distributions; conditional and marginal distributions; independence of random variables; transformations of random variables; limit theorems. - To introduce fundamental ideas and methods of mathematics using the study of probability as the vehicle. These ideas and methods may include systematic theorem-proof development starting with basic axioms; mathematical induction; set theory; applications of univariate and multivariate calculus.
PH 1111: Principles of Physics: Mechanics
An introductory course in Newtonian mechanics that stresses invariance principles and the associated conservation laws. Topics include: kinematics of motion, vectors and their application to physical problems, dynamics of particles and rigid bodies, energy and momentum conservation, rotational motion.
PH 1121: Principles of Physics: Electricity and Magnetism
An introduction to electricity and magnetism, at a somewhat higher mathematical level than PH 1120. Topics include: Coulomb's Law, electric fields and potentials, capacitance, electric current and resistance, magnetism, and electromagnetic induction.
ETR 1100: Engineering Innovation and Entrepreneurship
In the modern competitive and global world confronting today?s engineers, innovation and entrepreneurship (I&E) are increasingly important perspectives for every engineering career. Individuals proficient in I&E are likely to possess unique competitive advantage over those who do not. This course develops the foundation for developing such proficiency by examining the functional roles of the business/commercial aspects of engineering disciplines as well as establishing a basis for innovative thinking. Specific cases where I&E has led to new products innovation and new enterprise development will supplement course materials.
BB 1001: Introduction to Biology
This course is designed for students seeking a broad overview of biologic concepts, especially at the cell and organism level. It is conducted in an active style including the use of case studies, class discussion/participation, and classroom polling systems. The major goal of this course is to help students become more informed citizens, skeptical when presented with data in the media, and knowledgeable enough to question and make informed decisions about scientific advances and science policy. It will primarily focus on current topics which may include stem cells, ethical uses of DNA, development of personalized medicine, genetic engineering, antibiotic resistance.
BB 1035: Introduction to Biotechnology
This course will cover topics including genes-to-proteins, cell cycle, genomics, synthetic and systems biology, stem cells and regenerative medicine, cellular signaling, personalized medicine, and the production of therapeutic biologics. Through lectures, discussion and project work, students will gain an understanding of the function of biological systems at the molecular and cellular level and explore their application through genetic and cellular engineering to biotechnology. Projects will be designed to facilitate students? understanding of the links between biological systems, biotechnology applications and their impact on society. This course is intended for BBT and other life science majors.
AR 1101: Digital Imaging and Computer Art
This course focuses on the methods, procedures and techniques of creating and manipulating images through electronic and digital means. Students will develop an understanding of image alteration. Topics may include color theory, displays, modeling, shading, and visual perception.
AR 2201: The Art of Animation I
This course examines the fundamentals of computer generated 2D and 3D modeling and animation as they apply to creating believable characters and environments. Students will learn skeletal animation and traditional polygonal animation, giving weight and personality to characters through movement, environmental lighting, and changing mood and emotion. Students will be expected to master the tools of 3D modeling and skinning, and scripting of behaviors.