Creating With Contemporary Tools
At Milton, students learn programming as a medium for expression—as a tool to build software and to solve big problems. At the introductory level, students learn basic languages, beginning with Java and moving on to languages such as Swift, XML and Python—all through project-based learning. Once they’re comfortable with the language, they learn how to collaborate on developing code together, using industry-standard organizational tools to communicate and synchronize their work—sharing responsibility and ensuring efficient workflow.
All Milton students experience an introduction to programming in Geometry classes, which sparks an interest in many students, who then take on elective courses in Advanced Programming Applications and Artificial Intelligence. In advanced courses, faculty become more team members than instructors, supporting and brainstorming along the way. Using these tools, students grow and stretch in important ways. Students emerge from their coursework as great problem solvers, unafraid of tackling even the most complex issues.
Annual competitors—and often winners!—at MIT Hackathons, students take their interests and skills to the highest levels, joining peers in further exploration outside of class, as part of Milton’s student Programming Club.
From the Classroom
Final Projects in Advanced Computer Programming
Launching a “Milton Students” app for both iOS and Android platforms, which keep students synced with weekend campus activities, dining hall menus, and mailbox access
Developing a refrigerator that tracks its own inventory
Building a Milton ESPN-style app that tracks game schedules, posts real-time scores, provides Google Map-based directions to athletic competitions, and collects game-related Tweets
Creating a competitive game-trading app called “Hot Potato”: pass the potato fast, gain life points, and win access to games that “drop” to your device, based on your campus location
Computer programming courses vary to reflect the fast pace of change in computing languages and our desire to relate coursework to student interests. Computer programming courses are open to all students, whether novice or experienced. The sequence begins with the introductory course, Computer Programming 1. The advanced courses require permission of the instructor. Please direct any questions to Mr. Hales.
Computer Programming 1
This project-based course is an introduction to computer programming. No prior knowledge of computing is needed. Using the development of video games, students learn the basic concepts of programming and the fundamentals of the Java programming language. Game topics covered include user control, decision-making, graphics, sound, character artificial intelligence and animation. Students develop problem solving and logical thinking skills through object oriented programming and algorithm design.
Second semester projects allow students to explore more advanced topics and work on larger projects of their own choice. Past projects include writing multilevel video games, music composition software, and optical character recognition software. The design and implementation of this course is unique, allowing students to master many basic concepts in programming while also developing compelling projects.
Computer Programming 2
This course is intended for students who have completed Computer Programming 1 or who have learned equivalent material and received permission to enroll. It includes topics such as data structures, database programming, recursion, pathfinding algorithms, game AI programming, networking, graphical user interfaces, web programming and control systems. The content and emphasis of the course are adapted each year to the interests and experience of the students. The course is taught using Java, PHP and other languages. In recent years, students have written Internet network programs, studied artificial intelligence to fly a quad-copter (also built by students), created projects around Arduino and Raspberry Pi single board computers and written games based on harvested Twitter data. (Permission of the instructor is required.)
Computer Programming 2 & 3: Computer Programming and Applications
This course is intended for students who have completed Computer Programming 1 or who have learned equivalent material and received permission to enroll. The course begins with topics such as data structures, database programming, recursion, pathfinding algorithms, game AI programming, networking, graphical user interfaces, web programming and control systems. The content and emphasis of the course are adapted each year to the interests and experience of the students. After learning the above concepts, students apply them to handheld app development (iPhone and Android). Students will design applications for Android and then for iOS, using a variety of programming languages, including Swift, Java, SQL and PHP. Recent class projects include the Milton Academy Students application (available at Google Play and iTunes for free), Internet network programs, a study of artificial intelligence to fly a quad-copter (also built by the students) and games based on harvested Twitter data. (Permission of the instructor is required.)
Computer Programming 3: Programming Applications
This course exposes students to practical applications of programming. The focus is on developing applications for handheld devices (iPhone and Android). Other topics covered are based on student interest and emerging technologies. Students design applications for Android and then for iOS, learning the relevant material to do so. The coursework will use a variety of programming languages, including Swift, Java, SQL and PHP. A recent class project is the Milton Academy Students application (available at Google Play and iTunes for free). (Permission of the instructor and prior programming experience are required. With departmental permission, this course may be taken concurrently with Computer Programming 2.)
Computer Programming 4: Applied Mathematics and Artificial Intelligence
This course will guide students through artificial intelligence as well as mathematical concepts in computer programming, including linear algebra, triangulation, the inverse square law and decay. Using a variety of programming languages, students will work on two major projects, which will incorporate cutting edge technologies, artificial intelligence and previous programming knowledge. It is not uncommon for projects to also include some engineering components. Previous projects include building a smart refrigerator that dynamically tracks inventory, neural networking software, and mapping software used to identify nearby Wi-Fi hotspots. (Prerequisite: Computer Programming 2. With departmental permission, this course may be taken concurrently with Computer Programming 3.)
The culture that Mr. Hales creates in the programming classes is entirely collaborative—intense, but fun, and creative. The other kids in class have all kinds of backgrounds, interests and talents, and everyone is welcome here. Mr. Hales breaks down large, potentially overwhelming tasks into manageable pieces, and he empowers us. The mutual respect and support in this room is infectious.Jacob Aronoff