engr3599 - special topics in computing

3
ENGR3599 - Special Topics in Computing Published on Olin College of Engineering (https://www.olin.edu) Return To Full Course Listing [1] Return To Filtered Course Listing [2] ENGR3599 - Special Topics in Computing ENGR3599 - Special Topics in Computing Credits: Variable Credits ENGR Required Requisites Prerequisite(s): ENGR2510 For information contact: Downey, Allen Course Description 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. Additional Information 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 [3]] 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. Page 1 of 3

Upload: others

Post on 28-Dec-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

ENGR3599 - Special Topics in Computing Published on Olin College of Engineering (https://www.olin.edu)

Return To Full Course Listing [1]

Return To Filtered Course Listing [2]

ENGR3599 - Special Topics in Computing

ENGR3599 - Special Topics in Computing

Credits: Variable Credits ENGR

Required Requisites

Prerequisite(s): ENGR2510

For information contact: Downey, Allen

Course Description

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

Additional Information

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

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

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

1. Complexity science is an interdisciplinary field—at the intersection of mathematics, computerscience and other disciplines such as physics and economics—that focuses on models ofsystems with many components, local interactions, and complex behavior. These models areoften 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, andsoftware engineering tools that are appropriate for modeling, simulating and analyzing complexsystems.

3. Philosophy of science: The models and results in this class raise a number of questions relevantto the philosophy of science—including the nature of scientific laws, theory choice, realism andinstrumentalism, holism and reductionism—which we will discuss as they arise, along withrelated readings.

Page 1 of 3

ENGR3599 - Special Topics in Computing Published on Olin College of Engineering (https://www.olin.edu)

Topics may include the structure and dynamics of complex networks; cellular automata, self-organizedcriticality, 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 andlambda calculus, objects, laziness, continuations, monads, objects, and concurrency. Class workrevolves 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 thiscourse, students learn basic networking by themselves implementing a version of the Internet. In thefirst part of the course students use the Python programming language to implement network protocolson Raspberry pi computers. Each protocol the students implement corresponds to a layer of thestandard OSI network model. The goal is to keep each layer simple and easy to understand. Byimplementing the layers of the OSI model, students come to understand the functions of each protocollayer and the rationale for a layered model. Students will present the final network for an audience ofinterested students, faculty and staff. For the second part of the course, students choose an applicationor area of networking that they would like to investigate and present to the class and interested facultyand staff.

FA15: Visualizing Data; 4 credits (Pucella)

Interactive data visualization sits at the intersection of graphic design and programming: the idealvisualization 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 datastructures and algorithms to process data, to technologies for interactive visualization such asJavascript/D3. Course work will be project-driven, based on existing available large data sets. By theend of the course, we should be able to construct visualizations such as http://fivethirtyeight.com/interactives/world-cup/ [4] or http://ri.id.au/closethegap [5].

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 sponsoredby Juniper Networks. The goal of this iteration is to teach computer networking as an Olin lab- andproject-based class. Students will implement computer networks on Raspberry pi B+ computers usingthe Python programming language. This is a good way to discover that computer networks are morecomputer than network. The postal service, telegraphs and telephones were all networks. Each had itsown physical plants. Gmail, Twitter and Skype are versions of the postal service, the telegraph and thetelephone. However, they are all just application programs sharing the same physical network ofbridges, routers, gateways and services. The class will first create teams of three or four which willdevelop their own internet. Each team will begin from the bottom of the stack by creating their ownphysical layer; they will then create their own data link layer and from both of those, their own local

Page 2 of 3

ENGR3599 - Special Topics in Computing Published on Olin College of Engineering (https://www.olin.edu)

area networks. Teams will then work from the stop of the stack down, each creating a UDP applicationon the standard Python/Linux socket interface. Finally, the teams will get together to create a commonnetwork layer and routers – an internet. The teams will then study the actual TCP/IP stack by creatingTCP applications on the standard Python/Linux socket interface. They will then study basic networkcryptography and implement simple symmetric and asymmetric cyphers in Python. The final part of theclass 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 computationalapproach. We will use a new textbook, Think DSP, which I am working on now. The current draft is at think-dsp.com [6]. Students will work on exercises from the book, help develop new material, and workon case studies that might be included in the published version of the book. Some projects mightinvolve basic circuit design and Arduino programming. I expect that this class will serve as a goodprelude to Signals and Systems. In its current form, it is not a substitute for DSP in the ECE majorrequirements.

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

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

FA14: Game Programming; 4 credits (Pucella)

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

Source URL: https://www.olin.edu/course-listing/engr3599-special-topics-computing/

Links:[1] https://www.olin.edu/course-listing[2] http://www.olin.edu/printpdf/course-listing/engr3599-special-topics-computing/[3] https://en.wikipedia.org/wiki/Complex_systems[4] http://fivethirtyeight.com/interactives/world-cup/[5] http://ri.id.au/closethegap[6] http://think-dsp.com

Page 3 of 3