Work Hours
Everyday: 北京时间8:00 - 23:59
CS 108: Application Programming Spring Semester 2021
Boston University
College of Arts and Sciences
Computer Science Department
CS 108: Application Programming, Fall Semester 2021
Course materials on Blackboard: https://learn.bu.edu.
Classroom Meetings @ CAS 225
A1: Mon/Wed 10:10pm-11:55am
Workshop Times (online only)
A1: Mon/Wed 3:35pm-4:35pm
Instructor
Aaron Stevens, azs@bu.edu.
Always include “CS108” in email subject.
In-Person Office Hours @ QST 546F
Monday 3-4; Wednesday 2-3pm
On-line Office Hours:
https://bostonu.zoom.us/my/azs.bu.edu
Thursday 9-10am and by appointment:
http://aaronstevens.youcanbook.me
Teaching Assistant
Susritha Kopparapu (skoppara@bu.edu)
Tutoring hours to be announced, see Blackboard
Undergraduate Assistant
Tristan Tew (ttew@bu.edu)
Tutoring hours to be announced, see Blackboard
Course Description
CS108 is a rigorous introduction to programming for students not majoring in computer science. CS108 will
cover a broad set of topics about application development, including: basic programming concepts, application
decomposition and abstraction; data manipulation and programming with databases; and using the world-wide
web as a graphical user interface.
Our focus in teaching programming in this course centers on the following concepts:
- Problem analysis: organizing problems from our world into the structure, syntax, and semantics in which
a computer solution can be applied. - Fundamentals of procedural programming: writing functions, using pre-existing modules, flow-of-control,
and writing interactive programs. - A brief introduction to object oriented programming, including the use of objects from the Python API
and creating user-defined classes. - The role of data structures and databases in application programming, including the use of objects, lists,
tuples, dictionaries, and database object persistence. - The structure and development of web applications, which generate dynamic content for the World
Wide Web, social networking, and e-commerce.
Throughout the course, the emphasis will be on writing literate code (i.e., so that code you write is thoroughly
documented and follows consistent style and naming conventions, making it easy to read and suitable for
working with teams) and on developing your excellent testing and debugging skills (i.e., so that you will become
an outstanding detective and problem solver).
Assignments will include applications in science, commerce, games, the Web, and social networking.
CS 108: Application Programming Spring Semester 2021
Our Teaching/Learning Method
Our teaching-learning approach in CS108 that of a programming workshop, wherein students spend class
time actively doing programming. Our expectation is that you will do most of the independent programming
assignments (what used to be called “homework”) in the workshop classroom, so that you will have access to
the teaching staff while working on the assignments.
How can we spend class time working on assignments, when you also need to learn new concepts,
programming constructs, and syntax for each assignment? Our solution is to use the flipped-classroom
teaching/learning methodology1
, which flips the typical use of in-class and at-home time. You will be responsible
for content-acquisition before coming to class, and we will use in-class time for learning through programming
assignments. Here’s how:
Our class is organized into 20 learning modules, one for each day (excluding the final project).
Before class, you will: - Watch some video mini-lectures and detailed Python examples, and practice the examples (i.e., type up the
example(s) and get them to run locally, on your own computer). - Reading some assigned sections in the textbook or other online readings.
- Submit the examples for the day on Gradescope, as evidence of your preparation.
- Read the assignment of the day. You must read the assignment before class, so you are prepared to ask
questions during class time (and so that you do not waste precious in-class time reading the assignment).
Our in-class time will be in two parts:
- “Discussion time”: (held in class), approximately 30-45 minutes
- We will begin class by having a brief discussion about the concepts and examples, and create new
examples on an “as-needed” basis to answer your questions. - We will do several short multiple-choice questions about the new material you’ve learned for the class.
- We will introduce the new assignment for the day, and answer general questions about the concepts,
inputs, and outputs.
The assignments will be due the day after class, but the expectation is that most students will complete
most of the work during class time. It’s often tempting to start the assignment by doing the parts you know,
but in fact this is a poor use of your time! Start with the new/hard part (e.g., writing functions or repetition),
and you can get help during the workshop time. Finish up the familiar/easy part on your own (e.g., taking
inputs from the user or formatted output).
- “Workshop time”: (held in class), approximately 60-75 minutes
- Students will work mostly independently on the assignment. You may talk with each other, ask/answer
questions about the requirements, Python syntax and error messages, algorithms, etc. (Each student
must write their own code.) - The course staff (instructor, TA, and undergraduate assistant) will circulate among the students to
answer questions and provide one-on-one consultations to assist with writing and debugging your work.
After class, you will: - Finish up remaining work on the day’s assignment.
- Submit your work to Gradescope by 9pm the following day.
1 See http://net.educause.edu/ir/library/pdf/eli7081.pdf
CS 108: Application Programming Spring Semester 2021
Covid Contingencies
As we know, the state of the Covid pandemic is unpredictable, but here are my expectations and plans: - Should a student has any symptoms of illness, has a positive test result, or otherwise needs to quarantine
during the semester, they should do so with the understanding that I will work with them individually to help
them continue with the course work. All class materials (including video mini-lectures and examples) are
online, and the course staff will help support you via online office hours in-lieu of your attendance at in-class
workshop times. - Should the instructor be unavailable to meet in-person, the teaching assistant and undergraduate assistant
are fully capable to run the class in his absence, and the instructor can join via Zoom. - Should the University require reduced capacity in classrooms, but still require us to meet in-person (e.g.,
Fall 2020), we will hold a 45-minute discussion during the morning time block and meet again for workshop
time via Zoom during the afternoon time block (Mon/Wed 3:35pm-4:35pm). - Should the University close to in-person classes altogether (e.g., Spring 2020), we will meet fully online on
Zoom for both discussion and workshops during the morning time block (Mon/Wed 10:10pm-11:55am).
Books and Software
Required: How to Think Like a Computer Scientist with Python 3
http://openbookproject.net/thinkcs/python/english3e/
Daily reading assignments will be posted on Blackboard.
We will be using the Top Hat (www.tophat.com) classroom response system in class.
You will be able to submit answers to in-class questions using Apple or Android
smartphones and tablets, laptops, or through text message. An invitation will be sent to
you by email, but if you don’t receive this email, you can register by simply visiting our
course website: https://app.tophat.com/e/520207
Top Hat will require a paid subscription, and a full breakdown of all subscription options
available can be found here: www.tophat.com/pricing.
You can visit the Top Hat Overview (https://success.tophat.com/s/article/Student-TopHat-Overview-and-Getting-Started-Guide) within the Top Hat Success Center which
outlines how you will register for a Top Hat account, as well as providing a brief overview
to get you up and running on the system. Should you require assistance with Top Hat at
any time, due to the fact that they require specific user information to troubleshoot these
issues, please contact their Support Team directly by way of email
(support@tophat.com), the in app support button, or by calling 1-888-663-5491.
Python Software: We will be using the Python programming language version 3.9.x, which you can
download for free online: http://www.python.org/download/.
We will also use the Microsoft VS Code Integrated Development Environment, which can
be downloaded here: https://code.visualstudio.com/download
Piazza
Discussion
Board
Students should post questions about examples, tools, and syntax issues on our class’
Piazza website: https://piazza.com/bu/fall2021/cs108
You may post small code snippets (2-3 lines is usually OK) but you must not post entire
code files with your solutions to the assignments.
CS 108: Application Programming Spring Semester 2021
What You Need to Know About Computer Programming2
I believe anyone can succeed at learning to program. This is a first course in computer programming, and there
are no formal pre-requisites. The only expectation of students’ computer skills before taking this class is to be
comfortable with using email, web browsing, and copying and pasting text. In addition, familiarity with high
school-level algebra (e.g. MA 118) is assumed.
In addition, you will need time, and this is more important than you can imagine.
Computer programming, like farming, takes time. There are many steps in farming (e.g., seeding, watering,
fertilizing, waiting, and harvesting), which must be completed in order. Each step takes time, and it’s simply not
possible to cram farming into a shorter time horizon. Programming also has many steps (e.g., understanding the
problem, designing an algorithm, writing code, testing code, rewriting code, retesting code, and checking that
the solution meets the requirements to solve the problem). Learning to program is similar to farming, and again,
it is not possible to skip or rush some steps and cram the learning into a shorter amount of time.
Grading
The following percentages are tentative and may be changed at the instructor’s discretion at any time:
Pre-class preparation 10%
Attendance and in-class clicker questions 10%
Programming assignments (about 20) 40%
Final project 40%
To earn a passing grade in CS108, you must earn a grade of at least 60% on each sub-component (pre-class
preparation, attendance and clicker questions, programming assignments, and the final project).
The instructor reserves the right to make changes to the grading criteria, weights, assignments and course
outline to best serve the needs of the class.
Getting Help With Assignments
The assignments in this class will be very challenging and often time consuming. To be most successful
with the assignments, you must be adequately prepared for each class meeting by having completed all of the
online videos, prepared the code examples, and read the required readings. You cannot expect to be successful
on the assignments without a thorough preparation.
We will be discussing the assignments in class, and working on the assignments during online “workshop time”
each afternoon. Plan your time so you can ask questions in class. When you get stuck, the instructor, teaching
fellow, and undergraduate assistants are here to help you. The best avenue for getting help is during the
workshop time. You can also get assistance during workshop time and tutoring hours.
Outside of class time, you may also post questions on our Piazza class discussion site. Always be specific
about the problem you are having (e.g., “I have a syntax error at line 42. Would you please explain it to me?”),
and include the line of code that is causing the problem (but do not post your entire code file, function, etc., as
this would violate the academic conduct policy of the class!)
2 Adapted from text in “Core Techniques and Algorithms in Game Programming,” Daniel Sanchez-Crespo Dalmau.
CS 108: Application Programming Spring Semester 2021
Assignment Grade Review Policy
Programming assignments will be submitted via Gradescope. In general, assignments will be graded within 5
days of submission. Grading will follow a standardized rubric and include comments about any point deductions.
Please do not bring up grade questions during class discussion or workshop time, as this would take time away
from helping you and other students with programming assignments. Instead, if you have questions or concerns
about a grade on an assignment, you should email the Teaching Fellow to request a review. The TF will process
grade reviews within 3-4 days and respond by email.
Requests for grade reviews must be submitted by email within 2 weeks after the assignment was graded.
Requests for grade reviews submitted more than 2 weeks after an assignment is graded will not be processed.
Do not wait until the end of semester, as this is a very busy time for everyone.
Collaboration Policy and Individual Work
Collaboration is recommended in understanding programming concepts and system features. You are
encouraged to discuss the examples, the homework problem statements, algorithms and expected output, and
to seek and receive help with the Python programming language, syntax, and any IDE or other debugging tools.
However, each student must write their own code and other deliverables independently.
What is plagiarism?
It is the student’s responsibility to know and understand the provisions of the CAS Academic Conduct Code,
which is available here: https://www.bu.edu/academics/cas/policies/academic-conduct/
With respect to CS108, plagiarism is specifically defined to include (but is not limited to) the following: - collaboration on the code you write (unless you are specifically instructed to do so on a specific task)
- copying any part of someone else’s program, even if you have permission and/or have modified the code
- sharing or giving your code or even a subset of your code to another student to review
- reviewing another student’s solution (including from past semesters)
- excessive collaboration (i.e., writing your solution together)
All CS108 homework assignments are independent work. It is course policy to use automatic plagiarism
detection software, and suspicious similarities will be uncovered.
Incidents of academic misconduct will be reported to the Academic Conduct Committee (ACC). The ACC may
suspend/expel students found guilty of misconduct. At a minimum, students who engage in misconduct will
have their final grade reduced by one letter grade (e.g., from a B to a C).
CS 108: Application Programming Spring Semester 2021
Administrative Policies
The official administrative business of this class will be conducted by email.
Grade questions or requests for review, notification of absence, etc. will be processed via email so that we both
have a written record of what was agreed.
Attendance and discussion/asking questions are expected and will be reflected in your grade.
If you must be absent, please email me in advance to let me know why you won’t be in class, and to let me
know what you will do to keep up with the assignments. - We will use the TopHat software to take attendance during the first 2 minutes of class time.
If you do not sign in before the attendance app is closed, you will be marked as absent. - Per the CAS Dean of Students, students who join the class after the first day of the semester are not
absolved of their responsibility for lack of attendance before they join the class. - Please do not ask the instructor to “correct” your attendance records.
CS108 is not a correspondence course. Inadequate attendance is sufficient grounds for a grade of F.
Assignments are due on the date stated on the homework assignment (to be posted on web). - Assignments received within 0-24 hours of the deadline will be accepted with a 10% penalty.
- Assignments received more than 24 hours after the deadline will not be graded.
No special make-up work will be accepted after the end of the semester. Don’t even ask.
In the event of a documented major medical problem, a grade of Incomplete will be given pending the
submission of complete work. However, make up work “to improve one’s grade” will not be accepted.
It is the student’s responsibility to retain all papers (e.g., quizzes, exams) that have been graded and
returned. Should these original documents not be available in the event of a grade dispute, I will need to defer
to my own records.
Requests for review or re-grading of lab exams or assignments must be brought to your TF or instructor by
email, no later than 1 week after the exam/assignment has been returned, and absolutely no later than the last
class day of the semester.
Grades are not negotiable. Don’t even ask – just do the work and you will get the grade you deserve. Of
course, please bring any clerical grading errors to our attention by email and we will gladly correct them.
Withdrawing from the Course
If you feel that you want to drop or withdraw from the class, please come talk to your instructor about it as early
as possible; we want to help you succeed, but you need to ask for help.
The last day to drop a class (without a “W” grade) is Thursday, October 7, 2021.
The last date to withdraw and receive a “W” grade is Friday, November 5, 2021.