ENGR3599 Special Topics in Computing

Special Topics in Computing classes (ENGR X599) typically cover a specific topic in Computing and are intended to enhance and expand the selection of offerings from semester to semester.


Variable Credits ENGR


FA16:  Complexity Science; 4 credits (Downey, Woodard)

?The study of complex systems represents a new approach to science that investigates how relationships between parts give rise to the collective behaviors of a system and how the system interacts and forms relationships with its environment.? [Wikipedia]

This class is about complexity science, data structures and algorithms in Python, and the philosophy of science:

  1. Complexity science is an interdisciplinary field?at the intersection of mathematics, computer science and other disciplines such as physics and economics?that focuses on models of systems with many components, local interactions, and complex behavior. These models are often characterized by structure, rules and transitions rather than by equations.
  2. Data structures and algorithms in Python: This class picks up where Software Design leaves off, introducing additional data structures, algorithms, language features, design patterns, and software engineering tools that are appropriate for modeling, simulating and analyzing complex systems.
  3. Philosophy of science: The models and results in this class raise a number of questions relevant to the philosophy of science?including the nature of scientific laws, theory choice, realism and instrumentalism, holism and reductionism?which we will discuss as they arise, along with related readings.

Topics may include the structure and dynamics of complex networks; cellular automata, self-organized criticality, and generative systems; fitness landscape models of biological and technological evolution; and agent-based models of social and economic behavior.

FA16:  ENGR3599A:  Programming Languages; 4 credits (Pucella)

This course is an introduction to the theory, design, and implementation of programming languages. Topics covered may include: semantics of programming languages, types, higher-order functions and lambda calculus, objects, laziness, continuations, monads, objects, and concurrency. Class work revolves around the implementation of interpreters for a variety of small programming languages.


SP16:  Computer Networks; 4 credits (Morrow)

Computer networks have made fundamental global changes in how we live. ENGR 3599 is a project­oriented class whose goal is to have students understand how computer networks are built. In this course, students learn basic networking by themselves implementing a version of the Internet. In the first part of the course students use the Python programming language to implement network protocols on Raspberry pi computers. Each protocol the students implement corresponds to a layer of the standard OSI network model. The goal is to keep each layer simple and easy to understand. By implementing the layers of the OSI model, students come to understand the functions of each protocol layer and the rationale for a layered model. Students will present the final network for an audience of interested students, faculty and staff. For the second part of the course, students choose an application or area of networking that they would like to investigate and present to the class and interested faculty and staff.


FA15:  Visualizing Data; 4 credits (Pucella)

 Interactive data visualization sits at the intersection of graphic design and programming: the ideal visualization needs to be easy to understand and aesthetically pleasing, but also interactively navigable, permit different views of the data, and be responsive no matter the amount of data being displayed. The course will focus on the technological aspects of data visualization, from databases and data structures and algorithms to process data, to technologies for interactive visualization such as Javascript/D3.  Course work will be project-driven, based on existing available large data sets. By the end of the course, we should be able to construct visualizations such as http://fivethirtyeight.com/interactives/world-cup/  or  http://ri.id.au/closethegap.


SP15:  Computer Networks; 4 credits (Morrow)

Computer Networks is a laboratory class in the design and implementation of ? computer networks. This Spring 2015 class is the fourth iteration of an Olin educational research project originally sponsored by Juniper Networks.  The goal of this iteration is to teach computer networking as an Olin lab- and project-based class.  Students will implement computer networks on Raspberry pi B+ computers using the Python programming language.  This is a good way to discover that computer networks are more computer than network. The postal service, telegraphs and telephones were all networks.  Each had its own physical plants. Gmail, Twitter and Skype are versions of the postal service, the telegraph and the telephone. However, they are all just application programs sharing the same physical network of bridges, routers, gateways and services.   The class will first create teams of three or four which will develop their own internet.  Each team will begin from the bottom of the stack by creating their own physical layer; they will then create their own data link layer and from both of those, their own local area networks.  Teams will then work from the stop of the stack down, each creating a UDP application on the standard Python/Linux socket interface.  Finally, the teams will get together to create a common network layer and routers ? an internet.  The teams will then study the actual TCP/IP stack by creating TCP applications on the standard Python/Linux socket interface.  They will then study basic network cryptography and implement simple symmetric and asymmetric cyphers in Python.  The final part of the class will be dedicated to student networking projects.


FA14:  Computational Signal Processing; 2 credits (Downey)

This is an introduction to digital signal processing, primarily sound and images, taking a computational approach.  We will use a new textbook, Think DSP, which I am working on now.  The current draft is at think-dsp.com.  Students will work on exercises from the book, help develop new material, and work on case studies that might be included in the published version of the book.  Some projects might involve basic circuit design and Arduino programming.  I expect that this class will serve as a good prelude to Signals and Systems.  In its current form, it is not a substitute for DSP in the ECE major requirements.  

FA14:  A Computational Introduction to Robotics; 4 credits (Ruvolo)

This course will provide a computationally-focused introduction to the field of robotics. Students will learn how to both select and design algorithms for solving interesting problems in robotic perception and control. Additionally, students will learn to successfully balance tradeoffs between accuracy of an algorithm and its computational efficiency in both space and time. The course will move from structured labs to more open-ended projects as the semester progresses. Specific content areas that the course may address are: computer vision, machine learning, reinforcement learning, path planning, mapping and localization.

FA14:  Game Programming; 4 credits (Pucella)

Through a series of projects, we will learn to design and develop computer games in a variety of genres--strategy, puzzle, arcade, adventure--for individual play, adversarial play, and team play. Games may be implemented from scratch or via existing frameworks, where appropriate. In the process, we will learn about and tackle problems in computer graphics, algorithms, programming languages, artificial intelligence, simulation, distributed computing, and security.