Using software that (mostly) runs identically on Mac and Windows, our courses teach programming, graphics, and other skills that are relevant to all kinds of computers (with Mac OSX giving us access to Unix/Linux programs). Classes meet twice a week for the entire year in classrooms with one computer per student.
(The Department) This class will be hands-on and project focused. Students will learn how to work with Blender, a popular and free 3D modeling package, and how to make a project from design to final render. Along the way, students will work on exercises to develop the skills needed for each project. Topics covered will also include related techniques needed to create 3D scenes including lighting, texturing and rendering. Prerequisite: any previous computer class or permission of the department chair.
ALGORITHMS FOR GENETIC SEQUENCING
(Roam) For experienced programmers, this class introduces programs that analyze genetic sequences. There are numerous exercises in pattern-matching and string comparisons, calculating family trees based on DNA sequences while taking into account the basic operations of mutation, insertion, deletion, and transposition. Though we mostly use simplified models of DNA (without worrying about protein folding), this topic gives us a chance to study "design patterns," data-structures and algorithms for large data sets, and basic molecular models. Prerequisite: Programming II.
(The Department) This class will explore a range of techniques including stop motion, collage, abstract and cartoon animation. A variety of tools such as SingleFramer, Photoshop, After Effects, and Flash will be used, and students will be encouraged to experiment. Drawing skills are not necessary though students are required to maintain a weekly sketchbook. Prerequisite:
(The Department) The basic information necessary to use computers for schoolwork, learned through creative independent projects. We emphasize the use of computers as aids to writing and research (typing, word processing, database, spreadsheet), programming, desktop publishing, web page design, animation, and telecommunication. Prerequisite: none.
(The Department) This course builds on the concepts and skills introduced in Computing 1, and is designed for those students who wish to create more advanced projects. The focus is on creative applications of the computer: multimedia and web page design with advanced graphics, programming, animation, desktop publishing, sound editing, desktop publishing, and video. Prerequisite: any middle school computing course, HS Computing I, or permission of the department chair.
(The Department) Designing games presents unique challenges distinct from the design issues of other interactive media. In addition to the user interface, one must consider story, culture, modeling, and implementation. This course will explore developing usable and engaging games, human computer interaction, thematic structures, graphic design, sound effects, and game aesthetics. The course will operate in a workshop format and will take into account the history of non-digital and digital games, role-playing, puzzles, interactive fiction, and 3D modeling. Students will plan and create games both individually and collaboratively using a variety of languages, which may include ActionScript, Inform, Javascript, Lingo, Arduino and Python. The goal of the course is to allow students to explore the creative possibilities presented through the field of game design and to develop an appreciation for the beauty and logic of programming. Prerequisite: some programming or permission of the instructor.
(Roam) We write programs that create 3D computer graphics (houses, robots, landscapes). Once we complete a brief introduction to matrix multiplication, we can start shading, rotating, and animating objects that we have designed. Our programs read and process text files that contain descriptions of 3D graphic objects and display the resulting 3D objects from arbitrary viewpoints. For advanced students, projects include the construction of race car and airplane games with first person and chase plane viewpoints. Prerequisite: Programming II or permission of the instructor.
(The Department) Students gain a hands-on understanding of how to combine physical controls and screen-based design elements to support different types of interactions. Explore information design, visual composition, relationship between visuals and text, and how to visualize the possibilities of an idea. Students will create assignments related to the display and visualization of information; documenting a survey, graphically interpreting data, drawing schematic diagrams to illustrate concepts, and creating prototypes. Students will learn how to create applications that load data, render something visually compelling, and interpret data in some meaningful way. Software used will include Processing, Openframeworks, Photoshop and BBEdit. Prerequisite: none.
(The Department) Learn how to program with Objective-C, Interface Builder, and XCode on the iPhone and iTouch’s unix-based operating system. Understand the way the iPhone applications work and how to build them. Actively and creatively explore this new field of little computers using the iPhone as the main research platform. No iPhone required. Prerequisite: some programming experience.
(The Department) Motion Graphics, or animated graphic design, is the process of integrating drawings, photos, typography, digital video and audio to create visually innovative and dynamic graphics. While you will edit images, video and sound, emphasis will be placed on how you combine the pieces together over time to create your own short movies, digital stories, main title sequences or animations. By creating projects, managing footage, setting keyframes, working with alpha channels, applying effects, animating text, and experimenting while you design, you will gain a conceptual understanding of the role time and motion have on the presentation of your content. Prerequisite: permission of the instructor.
(The Department) Learn how to physically interact with a computer without using the mouse, keyboard and monitor interface. Move beyond the idea that a computer is a box or a system of information retrieval and processing. Using a microcontroller, a single-chip computer that can fit in your hand, write and execute interactive computer programs that convert movement into digital information. Work with components such as resistors, capacitors, diodes and transistors as well as integrated components. Through lab exercises and longer creative assignments learn how to program, prototype and use components effectively. Control motors and interpret sensors, as well as explore advanced concepts in interface, motion and display. Prerequisite: some programming experience or permission of the instructor.
(Arum) This class is an experimental environment in which students can combine theory and practice to interface microcontrollers and transducers. Learn how to make devices respond to a wide range of human physical actions. Building on previous knowledge acquired in Physical Computing 1, students will build projects from schematics, make programs based on class examples, and make interfaces talk to each other. Topics may include: networking protocols and network topologies; mobile objects; and wireless networks of various sorts, digital logic building blocks and digital numbering systems. Students will be involved in short production assignments and final projects, and keep an online journal documenting their work and reading. Prerequisite: Physical Computing I or permission of the instructor.
(Arum) Creating interactive work relies on building a relationship between the object and the viewer. By gathering information in the form of input, processing that into meaningful data, and outputting that contextually, new forms of engagement and interaction with an audience can be established. This class will focus on the input side of physical computing by researching various sensors and sensing methods and developing example methods for their use. By the end of the year the class will assemble a library of sensor applications for interactive applications. Topics will include different types of sensors; time and events; amplification and filtering of sensor signals; sensor networks; data processing, gesture recognition, serial and wireless communication, I2C, and related topics that aid in making sensor systems effective. By using Arduino, Processing and C++, students will also further develop their programming skills. There will be short one-week exercises that students complete to demonstrate the techniques discussed in class. In addition, students will be responsible for a sensor research project in which they explain the operating principles of a given sensor and present a working example of the sensor in use. Prerequisite: two years of physical computing.
(Department) Explore the science and art of computer programming. For students who want to create and modify their own computer software, this course uses the high-level programming languages Java (an internet-savvy version of C++) and Transcript (a multimedia descendent of Pascal) to introduce the basics of computer control. We use loops, variables, procedures, input, output, and branching decisions (with Boolean logic) to control graphics, sounds, and information. Prerequisite: none.
(The Department) A continuation of Programming 1, for students who are becoming more confident in their ability to combine data types and complex computer routines. We use Java (an internet-savvy version of C++) to look more deeply at object-oriented programming: class definitions, inheritance, methods, fields, arrays, and collections. Large projects include writing an interactive, animated project with control windows and graphics. Prerequisite: Programming I or permission of the department chair.
(The Department) Once we get threads and buttons and class hierarchies under control, we can focus more on code that can work on large data sets: sorting random sequences, controlling pointers, and creating a phone directory with records that can be searched and saved to disk. The large projects require greater skill in breaking tasks into efficient sub-tasks that have clear purposes. Prerequisite: Programming II or permission of the department chair.
(The Department) For the student with a great deal of experience with classes and methods, this course demands advanced programming. Topics include sorting, searching, simulations, file input/output, doubly and circularly linked lists, stacks, queues, trees, hash tables, and recursion. Some projects are joint efforts; team members split writing and debugging tasks and we will spend some time comparing the efficiencies of different algorithms. Prerequisite: Programming III or permission of the department chair.
PROGRAMMING FOR LITTLE COMPUTERS
(Arum) We will actively and creatively explore a variety of tiny, handheld computing devices including the iPhone, iPad and Arduino microcontroller. Students will create interactive experiences on these portable devices by learning to program with C, PureData, Open Sound Control, Objective-C and others as needed. Projects include creating handheld pixel games, personalized media controllers, new musical instruments and interactive toys. We'll also explore the rapidly developing OpenFrameworks port for the iPhone. The class is highly technical in nature and is geared to students who are looking for a challenging programming experience. Prerequisite: experience with Object-oriented programming.
SOFT CIRCUITS: WEARABLE, SOFT AND EXPERIMENTAL CIRCUITS
(Arum) Standard electronic components can be hard, brittle or difficult to work with. Embedding them in soft environments, like clothing or toys can be awkward. Building circuits using paper, fabrics, thread and paint opens up new possibilities for soft, curly, organic, visible and attractive electronics. This class will explore materials, components and construction techniques for successfully integrating soft materials with standard electrical supplies. The results will be light, thin, flexible, durable, aesthetic, and even expressive circuits. We will also cover techniques for integrating the Arduino Lilypad microcontroller and XBee radio communication to create interactive and social objects. Students will develop wearable devices and accessories as a means of self-expression and communication. Explore the relationship between the body, fashion, technology and social interaction. Experiment with materials and objects, and develop concepts to refine, construct and test. Make t-shirts that interact with each other, objects that light up in the dark, toys that talk to each other or artwork that responds to a user's movements. The resulting possibilities are almost endless. Prerequisite: none.
(Roam) Could some of that limitless solar energy in outer space be safely beamed down to Earth, making us less hungry for oil and less reliant on gas-burning cars and coal-burning power plants? Couldn’t this be a boost for health, environment, prosperity, you name it, if it worked? Since the 1970s, some physicists have been suggesting that colonies floating in space could build huge solar collectors, using minerals from the moon, and using microwaves to send down cheap (?) energy. This seminar asks whether space colonies are a possible, desirable investment in the future, and how they might realistically work. Issues include safety and health and life in space (artificial gravity, radiation), energy, cost, basic physics, and even political philosophy (Colonialization? Independence? Weapons in space?). We study models (simulations) of life support, ecosystems, financial investments, and world population vs. hunger vs. resource trends. The “Civilization IV” game, with its “manage a country” role-playing, might give us a way to design a “civ in space” scenario. We read works by technology philanthropist Buckminster Fuller and works by Ray Kurzweil, who is forecasting a rapidly approaching technological “singularity”—an escalating collection of breakthroughs in everything from genomics to artificial intelligence, robotics, nanotechnology and energy. This is also a chance to participate in NASA’s annual space colony design contest for high school students. See http://gargoyle.saintannsny.org for more information. Prerequisite: no programming experience necessary.
(The Department) This class will cover in depth the codes and design concepts required to make professional, functional web pages. The first half of the course will cover topics such as web layout and design using xHTML for content, CSS for design and layout, and Photoshop essentials for web graphic creation. The second part of the course will cover PHP (used to add functionality to your web pages and to streamline your xHTML code) and MySQL (databases). Small weekly projects will be used to prepare students for larger projects such as online portfolios, blogs, and personal web pages. Note that while this class will require significant programming, no previous programming or design experience is assumed of students taking this class. Prerequisite: none.