Academics Navigation

Courses

Get a feel for the exciting variety of courses taught at Marlboro.

This is a list of courses that faculty felt was representational of the courses offered. It is not a complete list of courses, some courses are offered yearly, while others are infrequent. A course may be inspired by events or strong interests and taught only once.

Most advanced work is in the form of tutorials on specific subjects, a collaboration between one faculty member and one student or a handful of students.

Computer Science

Algorithms
(4.00 Credits — Intermediate)

Spring 2019

An exploration of some classic computer science recipes and the ideas behind them. Topics will include big O notation, data structures such as queues and heaps, as well as problems involving sorting, searching, analyzing graphs, and encoding data. This is an intermediate level foundation course, strongly recommended for folks considering further work in computer science which is typically offered every other year. The primary programming language this semester will by python. Additional Fee:$0

  • previous programming course or experience

Artificial Intelligence
(4.00 Credits — Intermediate)

Fall 2015

An examination of the methods used in problems encountered in trying to teach computers to "think." Topics covered will be among the following: representation of knowledge, learning, game theory, perception, neural networks, cellular automata, cognitive modeling, and natural language processing. Most people who work in AI program in Lisp, and so we will likely use it as well (learn it along the way), but that won't be the main focus of the course. This is an intermediate course in computer science and as such assumes previous programming experience. Prerequisite: Substantive programming experience

Computer Systems
(4.00 Credits — Intermediate)

Fall 2018

A look at what goes on "under the hood" of a computer, in the implementation in machine code of a C program running on a Linux computer. Sometimes called "Computer Organization", a course like this one is a required part of most computer science degree programs, typically taken by sophomores after a course or two in basic programming concepts. Topics include the C programming language, machine-level data representation and assembly language, processor organization, system performance, memory caching, code compilation and linking and similar fun stuff. This course is likely to be offered every few years. Textbook: Computer Systems: A Programmer's Perspective, ISBN 0136108040.

  • Previous programming experience

Digital Arts Workshop
(2.00 Credits — Introductory)

Fall 2013

An open exploration of computer tools and techniques for working with images, sound, animation, video, and 3D models, aimed at anyone who wants to practice using software to make digital art. We'll be primarily using open source software such as the Gimp (images), Audacity (sound), Processing (motion capture with the Kinect) and Blender (animation). Class time will be spent looking at underlying concepts, learning software applications, and sharing ongoing work on projects. This class may be repreated for credit and may (depending on the amount of work and with permission of instructor) be taken for variable credit. Prerequisite: None

Digital Multimedia
(2.00 Credits — Introductory)

Fall 2010

A workshop in manipulating images, music, animation, and video with a computer, including some background topics in optics, acoustics, and the internet. Where possible, we'll be primarily using open source software systems such as the Gimp (images), Audacity (sound), and Blender (animation). After an initial look at many technologies, each student will choose a single project to focus on for the last third of the term. Prerequisite: None

Formal Languages and the Theory of Computation
(4.00 Credits — Advanced)

Fall 2019

A mathematical introduction to the theory of computation. Topics include automata such as Turing machines, formal languages such as context-free grammars, and computability questions as described by "NP-complete" problems and Godel's incompleteness theorem. This is an upper level course that presents the foundations of theoretical computer science. Expect practice with lots of mathematical proofs, with programming examples to build intuition.

  • Programming experience and some prior work in formal math

Gadgets: An Electronics & Microcontroller Lab
(2.00 Credits — Introductory)

Fall 2018

A hands-on exploration of interactive electronics with the Arduino programmable microcontroller and various sensors, motors, lights and switches which show the basics of circuits, coding, and the techniques behind the DIY (Do It Yourself) "Maker" culture. We will also do a bit of 3D modeling and printing. Required hardware : "SparkFun Inventor's Kit" ($100 at https://www.sparkfun.com/products/14265 )

Information Theory
(3.00 Credits — Intermediate)

Spring 2017

An introduction to what computer scientists mean by "information", including information entropy, randomness, error correcting codes, data compression, and cryptography. This is an intermediate course in computer science and as such requires some background in programming as well as math through at least pre-calculus.

Internet Technologies
(4.00 Credits — Introductory)

Spring 2012

An introduction to the various technologies behind the internet, including HTML, CSS, TCP/IP, DNS, and a whole lot of other acronyms. The course will be roughly divided into two parts: one on web page creation, and the other on internet infrastructure along with a little history and culture. Depending on the background of the participants, we may also do a little JavaScript, the programming language that makes web pages "do" things. Further internet related work at Marlboro (such as the Web Programming class) builds on the material in this course.

INTRODUCTION TO COMPUTER LOGIC & PROGRAMMING
(4.00 Credits — Introductory)

Fall 2009

By providing a solid grounding in computer logic and programming, this classlays the foundation for further work in computer science. Much as acompetency with English grammar is required for writing, an understanding ofprogramming is required for nearly all intermediate and advanced work incomputer science. A similar course is offered every fall, though thelanguage chosen varies from year to year. This semester starts from theground up, from number systems, to encoding data, to computer logic, toprogramming. The language for this semester is ECMAScript, more commonlyknown as JavaScript. It is a versatile scripting language that is part ofthe core toolset for the World Wide Web. Given its focus on interactivity,JavaScript allows for an integrated approach to learning procedural,object-oriented, and event-driven programming models in what is, perhaps, afamiliar development environment that provides immediate feedback whentrying to learn the language.

Introduction to Programming with Python
(4.00 Credits — Introductory)

Fall 2019

A first class in computer programming, and as such a foundation class for further work in computer science. Much as a competency with English grammar is required for writing, an understanding of programming is required for nearly all intermediate and advanced work in computer science. A similar course is offered every fall, though the language chosen varies from year to year. Python is a modern, elegant, high level scripting language, popular at Google among other places. In addition to learning about "object oriented programming", loops, input/output and all that, expect to also learn a variety of computer skills and basics.

Programming Workshop
(3.00 Credits — Intermediate)

Spring 2018

The goal of the Programming Workshop is to improve your programming practice, bridging the gap between a beginner's understanding of the craft and those withintermediate to advanced skills. The workshop is often taken by both students who took Intro Programming in the Fall as well as those with more experience. Coding projects will be partly individual with feedback from other students and partly in groups, developing collaborative team coding skills. Possible topics include object oriented programming, functional programming, recursion, scope, threads and forks, web development, numerical methods, graphics and graphical user interfaces, version control, APIs, documentation, and testing, depending in part on the background and interests of the participants. The programming languages used varies but is typically Python, Javascript, or C. Other languages such as Lisp, R, Ruby, Java, Julia, Go, and Haskell are also possible but have been less common in this course. May be repeated for credit and taken for 2 to 4 credits.

  • Previous programming experience

Scientific Computing
(4.00 Credits — Intermediate)

Fall 2013

Numerical simulations and data techniques have become increasingly important tools for understanding physical systems. This course explores these computer approaches to doing science. Topics include computational differential equations, chaos, fourier transforms, and statistical modeling. Prerequisite: Participants must have previous programming experience, math through at least calculus, and at least one semester of physics

Web Programming
(4.00 Credits — Intermediate)

Fall 2014

Most internet content is generated dynamically by computer programs. We will explore the various technologies used to do this, including CGI scripts, SQL databases, and a bunch of other acronyms. The specific programming language(s) and tools we will look at will depend on the background and skills of the participants, but will include at least HTML, CSS, JavaScript. PHP, Ruby, and frameworks such as Rails are other likely possibilities.  Prerequisite: Some programming and internet experience

www.seminar
(3.00 Credits — Multi-Level)

Spring 2014

An open exploration of the core technologies and concepts behind the interent and the world wide web. This seminar is designed to provide a foundation for further internet related work such as web programming. Depending on their previous background, participants will work with topics such as creating web pages (e.g. HTML, CSS, hosting, graphics, design), networking (e.g. TCP/IP, DNS), content creation (e.g. WordPress, Wikipedia), web services (e.g. Google Analytics), and dynamic content (i.e. JavaScript) This course may be repeated for credit, and may be taken for 2 to 4 credits. Prerequisite: None

For Computer Science offerings, also see:

Combinatorics Study Group
Number Theory

Detours

(a mostly random selection of Marlboro microdestinations)