CMU SAMS 2019 - Programming Courses

Course Syllabus


General Syllabus
Junior CS-Track Syllabus
Senior CS-Track Syllabus
Senior non-CS-Track Syllabus

General Syllabus

Overview

All three SAMS programming courses introduce students to computer programming. This field of study involves determining how to build algorithms (specific sets of instructions) that can solve problems, and how to translate those algorithms into a language that a computer can understand and execute.

The junior CS-track course will teach programming in the context of web development, using a combination of the languages HTML, CSS, and Javascript. The senior CS-track course will teach programming with a common general-use language, Python. The senior non-CS-track course will introduce students to the basic ideas of programming by teaching a subset of the Python language.

Resources

All courses have no required textbook; course notes will instead be shared online on the course website.

Students who need additional help on the assignments are encouraged to attend instructor office hours from 12pm-1pm on M/T/W/Th, or TA office hours from 6:30pm-8:30pm on M/T/W/Th/Su. The course staff is happy to answer questions, whether they be about the homework assignments, preparing for quizzes, or just about what getting a major in computer science is like.

All courses will use the online system Autolab for homework submission, grading, and providing feedback to students. All will also use the online system OH Queue to manage questions during office hours. Students should familiarize themselves with these two resources.


Junior CS-Track Syllabus

Learning Objectives

In the junior CS-track course, students will learn how to create web applications. This will involve learning three programming languages, HTML, CSS, and Javascript, and learning industry-leading technologies such as Git, Github, and Google Cloud Firestore. By the end of this course, students will have a public web-portfolio with example-projects that they can show to friends, family, universities, and employers.

Resources

For coding, we will be using the Atom editor, available on the Mac Clusters.

For reference, you will mainly be using the course notes and other resources from there, but you may and should use the entire internet. Many of the things you want to do as a web developer have been done before to some capacity, and many of them have been documented on the internet. Feel free to use Google to ask how others have solved these problems, but be sure to cite any code that you get from the internet. You may not copy code snippets of more than 5 lines.

Evaluation

Evaluation will be based on participation, homework, and quizzes.


Senior CS-Track Syllabus

Learning Objectives

In the senior CS-track course, students will learn how to design and write Python programs to solve moderately-complex problems. Students should learn to use control flow, simple data structures, and interactive systems by the end of the course. The work will culminate in writing code for a game of moderate complexity, Tetris.

Resources

You will need to use the Python programming language (which can be found here) and the code editor Pyzo (which can be found here). Both are free to download and can also be found on CMU cluster computers in the classrooms we will use. You may use a different editor if you wish, but all quizzes must be completed using Pyzo. If you wish to write non-graphics code online, you may do so using the online editor repl.it.

We will sometimes refer to notes from the Spring 2019 edition of the course 15-112 taught here at Carnegie Mellon University. These notes contain very useful examples and videos. For other Python programming language questions, we highly recommend the official Python documentation.

Evaluation

Evaluation will be based on participation, homework, and quizzes.


Senior non-CS-Track Syllabus

Learning Objectives

In the senior non-CS-track course, students will be introduced to the basics of thinking algorithmically and Python programming. Students should learn how to write code using basic control flow and input/output systems by the end of the course. The work will culminate in building small graphics programs that produce interesting results.

Resources

You will need to use the Python programming language (which can be found here) and the code editor Pyzo (which can be found here). Both are free to download and can also be found on CMU cluster computers in the classrooms we will use. If you wish to write non-graphics code online, you may do so using the online editor repl.it.

We will sometimes refer to notes from the Spring 2019 edition of the course 15-112 taught here at Carnegie Mellon University. These notes contain very useful examples and videos. For other Python programming language questions, we highly recommend the official Python documentation.

Evaluation

There are ten class periods overall, and each will be worth 10% of the final grade. Each class period will be graded half on participation and half on exercise completion.