3 minute read

Computer Science

Computer Science courses vary to reflect the fast pace of change in computing languages and our desire to relate coursework to student interests. Computer Science courses are open to all students, Classes I–III, whether novice or experienced. The sequence begins with the introductory course, Computer Programming 1. The advanced courses require permission of the department chair.

Computer Programming 1

(Half Course) 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

(Half Course or Semester 1 Course) 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 department chair is required.) Advanced Computer Programming 3: Programming Applications

(Half Course or Semester 2 Course) 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 department chair and prior programming experience are required. With departmental permission, this course may be taken concurrently with Computer Programming 2.) Advanced Computer Programming: Applied Math & AI

(Half Course or Semester 2 Course) This project-based course will introduce students to the basics of Artificial Intelligence and Data Science. We will cover many different types of applications in AI and AI concepts. Topics in the curriculum include k- mean square, logistic regression, perceptron, feed forward network, and convolutional neural networks. The class will do projects that cover clustering, binary classifiers, categorical classification, image classification, and natural language processing. Through all these projects students will get practice with curating and cleaning datasets. While students may choose to explore the mathematical depths of the AI concepts we discuss, they are not expected to learn more than just the most basic concepts within linear algebra necessary to understand machine learning models.

Applied Engineering & Design

(Half Course) This project-based course focuses on learning to design and create solutions for real world problems using programming, electronics and mechanical systems. Through investigation of how everyday machines, toys, and devices work, students are introduced to basic engineering concepts, electronics circuits, and systems design. Using Arduino and Raspberry Pi single board computers, students design and program embedded systems and interface them with the physical world. Students will go through the full product design cycle including writing proposals; designing with CAD software, and electronic and mechanical simulation software; fabricating and testing; and giving final presentations. Topics will vary with student interest and include robotics, electro-mechanical systems, audio systems, wearable technology, assistive technology, and sustainable energy systems. (Permission of the department chair and prior programming experience required.)