Bryn Mawr College
CMSC 110: Introduction to Computing
Prof. Deepak Kumar
Lecture Hours: Tuesdays & Thursdays, 12:55 p.m. to
Office Hours: Wednesdays from 2:00p to 3:30p
Room: 245 Park Science Building
Lab: All labs will meet in Room 231 PSB. Students should register for ONLY ONE of the labs shown below:
- Section-A: Tuesdays 2:25 p.m. to 3:15 p.m. (led by Prof. Kumar)
- Section-B: Thursdays 11:55 a.m. to 12:45 p.m. (led by Prof. Kumar)
- Computer Science Lab Room 231 (Science Building)
- You will also be able to use your own computer to do the labs
for this course.
Lab Assistants: The following TA Lab Hours are available for assistance on lab assignments. Remember, TAs are there to assist you in resolving programming issues, not to tutor or explain concepts.
TA Lab Hours (Rooms 230 & 231)
||6:00 to 8:00p
||7:00 to 9:00p
||8:00 to 10:00p
||Elia Agnostou, Lisa Hou
Learning Processing: A Beginner's Guide to Programming Images, Animations, and Interaction, 2nd Edition by
Daniel Shiffman, Publisher: Morgan Kauffmann, 2015.
Available at the Campus Bookstore. Also at amazon for $34.97 (as of August 22, 2-19).
Processing Software (This software is
already installed in the Computer Science Lab). The
software is also available for your own computer from
Processing web site (www.processing.org). Download the latest stable 3.X version for your own computer/Operating System.
Dropbox Account: Please go to dropbox.com and register. You will be using dropbox to submit many of your assignments. You will need to have this set up by the end of Week#1.
Course Description: Class Number: 2614 The course is an introduction to computing: how we can describe and solve problems using a computer. Students will learn how to write algorithms, manipulate data, and design programs to make computers useful tools as well as mediums of creativity. Contemporary, diverse examples of computing in a modern context will be used, with particular focus on graphics and visual media. The Processing/Java programming language will be used in lectures, class examples and weekly programming projects, where students will learn and master fundamental computer programming principals. Approach: Quantitative Methods (QM), Quantitative Readiness Required (QR), Scientific Investigation (SI); Haverford: Natural Science and Quantitative (NA/QU) ( ) Enrollment Cap: 24; Freshmen Spaces: 20; If the course exceeds the enrollment cap the following criteria will be used for the lottery: Major/Minor/Concentration; Freshman
We will cover the entire text during this semester. Please
refer to the text for more details. The following topics will be covered:
Introduction to the Java/Processing Language & Environment
Translation & Rotation
Images & Video
From Processing to Java
September 3: First lecture
October 1: Exam 1
November 7: Exam 2
December 12: Exam 3
- Assignment#1 (Due on Tuesday September 12): Click here for details.
- Assignment#2 (Due on Thursday, September 19): Click here.
- Assignment#3 (Due on Thursday, Octobe 3): Click here.
- Assignment#4 (Due on Thursday, October 31): Click here.
- Assignment#5 is posted (Due on Thursday, November 14): Click here for details.
- Assignment#6 is posted (Due on Thursday, December 5): Click here for details.
- Week 1 (September 3, 5)
September 3: Course introduction, adminstrivia. Computing: an introduction, examples of modern day computing. Algorithms, programs, and programming languages. Creative computing: an introduction with examples. Introduction to Processing: Drawing canvas, coordinates, pixels. Shapes: point, line, rectangle, ellipse. Color: grayscale and RGB color. Shape attributes: stroke weight, stroke color, fill color. Your first sketch.
Lab#1: Click here.
Read: Chapter1 1, 2, 3 from Shiffman.
Slides: Click here.
September 5: More basic shapes: arcs, quadrilaterals, curves. Example sketches. Doing a sketch from scratch: An Owl: Algorithm, psudeocode, program. Debugging and testing. More examples.
Read: Chpters 1, 2, and 3 from Shiffman. Also do the tutorials: Coordinate System & Shapes, color.
Reminder: Please create a dropbox account and send an e-mail to Deepak with the e-mail used for dropbox account. You will then get an invite to share a folder for all your submissions.
Assignment#1 (Due on Tuesday September 12): Click here for details.
- Week 2 (September 10, 12)
September 10: Dynamic sketch structure (using setup(), draw(), mousePressed(), and keyPressed()). Examples. Variables, names, and values. Types: int, float, String, color, PImage. Variable declarations and initialization. Assignment statement. System variables (mouseX, mouseY, etc.). The random() function in processing and its use.
Read: Chapter 4 from Shiffman.
Lab#2: Click here.
September 12: Variables: name, type, values. Functions. Random number generators. Transformations: translate() and rotate(). Examples.
Assignment#2 (Due on Thursday, September 19): Click here.
Read: Chapter 4 from Shiffman.
- Week 3 (September 17, 19)
September 17: Transformations: translation, rotation, pushMatrix() and popMatrix() (also, push() and pop()). Writing your own functions. Selection: if-statements.
Read: Chapters 5 & 7 from Shiffman.
Lab#3: Click here.
September 19: Functions, if-statements. Simple Physics modeling (gravity). Loops. Examples.
Read: Chapter 5 from Shiffman.
- Week 4 (September 24, 26)
September 24: Functions, loops (for- and while-). Doing computations using loops. Doing drawing using loops. Examples.
Read: Chapter 6 from Shiffman.
Sample Assignment#2 Program: Click here.
Assignment#3 (Due on Thursday, Octobe 3): Click here.
September 26: Trigonometry and how to use it in drawing. Drawing polygons and stars.
Read: Pages 233-236, 246-249 from Shiffman.
Sample Program: Drawing a 4-leaf Clover , Trig Points, Polygons
Sample Exam: Practice Exam, Practice Exam with Solutions. Please bear in mind that the syllabus for the sample exam may have been different from your exam. Some material on the exam may not be on your syllabus.
- Week 5 (October 1, 3)
October1: Exam 1 is today.
October 3: Exam Review. Introducing Perlin Noise - noise(). random() versus noise(). Example: string art anomation.
Read: Pages: 240-244 from Shiffman
- Week 6 (October 8, 10)
October 8: Objects and Object-Oriented Programming (OOP): Object: Attributes, Behaviors (methods), constructor(s). Defining and using objects. Examples.
Read: Chapter 8 from Shiffman.
TA Hours this week:
Ther will be NO TA Hours over Fall Break. TA Hours will resume on MOnday, October 21.
This week, TA HOurs on Tuesday only go from 6:00p to 9:00p)
Wednesday Noght: TA HOurs will be from 7:00 to 9:00p
October 10: Arrays: Declaring, initializing, using. Arrays of objects. Examples.
Read: Chapter 9 from Shiffman.
Example from class: OOPBall, Ball class.
Assignment#4 (Due on Thursday, October 31): Click here.
- Week 7 (October 15, 17)
No Classes. Fall Break
- Week 8 (October 22, 24)
October 22: OOP Review. Introducing this. Using this. Example. Object composition: Balls in a Box example.
Read: Your class notes from today. this is not discussed in your text.
Code: BallSketch.pde, Ball.pde, Box.pde
October 24: Doing computations: practice using arrays. Examples.
- Week 9 (October 29, 31)
October 29: Array examples, contd. Towards Data Visualization - drawing a pie chart. Strings/Tex.
Read: Chapter 17 from Shiffman.
Programs from class: DiceRolls, Birthday.
October 31: String type: common operations. Displaying text in canvas using fonts. Data Visualization: Drawing scatter plots (Halloween Special!).
Read: Chapters 17 and 18 from Shiffman. In Chapter 18, only read pages 383 to 396.
Programs from class: Scary Data Scatter Plot, The data itself (Save it in your sketch folder with the name "ScaryData.csv")
Assignment#5 is posted (Due on Thursday, November 14): Click here for details.
- Week 10 (November 5, 7)
November 5: Data Visualization examples: Drawing Pie Charts and Bar Graphs. Making interactive bar graphs.
Programs from class: Energy Charts.
November 7: Exam 2 is today.
- Week 11 (November 12, 14)
November 12: Data Visualization: Plotting line graphs: USPS First Calss Volume.
Programs from class: USPSViz, USPSData.csv (data file).
November 14: Recursion: Introduction, examples of recursive functions, drawing using recursion.
Programs from class: Simple Recursive Functions, Trees.
- Week 12 (November 19, 21)
November 19: 2-Dimensional arrays/matrices. Basic operations; defining them, creating them, intializying, and printing them. Examples: Simulating the 15-puzzle game.
Read: Pages 257-263 from Shiffman.
November 21: The NPuzzle: finishing up. Inheritance in OOP.
Assignment#6 is posted (Due on Thursday, December 5): Click here for details.
Programs from class: N Puzzle (complete program): The sketch (save in File NPuzzle), The Board class (save in File Board). NOTE: You will also need to create the font file. Do this once you have set up the sketch.
- Week 13 (November 26, 28)
No labs this week.
November 26: 2-D Arrays: Example: Interactive 15-puzzle. OOP Concepts: Inheritance (extends, super). Interfaces.
Read: Chapter 22 from Shiffman.
November 28: No class. Thanksgiving!
- Week 14 (December 3, 5)
December 3: What is Computer Science? Introducing: algorithms, complexity, Big-O notation. Examples: Linear search, Binary search.
December 5: More algorithms. Sorting: Selection Sort, Insertion Sort. Big-O analysis of sorting algorithms. On to pure Java.
- Week 15 (December 10, 12)
December 10: Review. Course Warp up.
December 12: Exam 3 is today.
Attendance and active participation are
expected in every class. Participation includes asking questions,
contributing answers, proposing ideas, and providing constructive
As you will discover, we are proponents of two-way communication
and we welcome feedback during the semester about the course. We
are available to answer your questions, listen to concerns, and
talk about any course-related topic (or otherwise!). Come to
office hours! This helps us get to know you. You are welcome to
stop by and chat. There are many more exciting topics to talk
about that we won't have time to cover in-class.
Although computer science work can be intense and solitary, please
stay in touch with us, particularly if you feel stuck on a topic
or project and can't figure out how to proceed. Often a quick
e-mail, phone call, or face-to-face conference can reveal solutions
to problems and generate renewed creative and scholarly energy. It
is essential that you begin assignments early, since we will be
covering a variety of challenging topics in this course.
Attending the TA Sessions and availing of their assstance in doing programming assignments is HIGHLY RECOMMENDED.
There will be several programming assignments,
weighted equally in the final grading. Assignments must be
submitted according to the Assignment Submission
instructions. You should pay careful attention to the Code Formatting Standards and Grading Policy when doing your
assignments. The grading structure for individual
assignments is broken down in the Grading Policy, posted in each assignment.
At the end of the semester, final grades will be calculated as a
weighted average of all grades according to the following weights:
Incomplete grades will be given only for verifiable medical
illness or other such dire circumstances. Consultation with and approval of Academic Dean is required.
Submission and Late Policy
All work must be turned in either in hard-copy or electronic
submission, depending on the instructions given in the
assignment. E-mail submissions, when permitted, should request
a "delivery receipt" to document time and date of submission. Extensions will be given only in the case of verifiable medical
excuses or other such dire circumstances, if requested in advance
and supported by your Academic Dean.
No assignment will be
accepted after it is past due.
No past work can be "made up" after it is due.
No regrade requests will be entertained one week after the graded work is returned in class.
There will be three exams in this course. The exams will be
closed-book and closed-notes. The exams
will cover material from lectures, homeworks, and assigned
readings (including topics not discussed in class).
Technology in the classroom
The class meetings/lectures will be a place to learn the concepts that are a part of the syllabus. I will, in the course of a lecture, write code on the board, and/or even do some live coding in class. The objective of this is to illustrate to you how to go about applying the concepts in practice. It is NOT a place for you to open your laptops and start to code with me. In fact, you are encouraged NOT to bring your laptops to class to use them for any purpose. It is distracting to other students. Phone (smart or otherwise) and tablet use during class meetings is also strongly discouraged (unless you are taking class notes on them, NO audio recording please). Listen, understand, ask questions, and take notes in a notebook if you need to. You will learn more! You will be doing coding in the labs under my supervision.
The labs and assignments in this course are a place for you to exercise your learning of the concepts and apply them in actual working programs. The best way to get the most of of this course is to try out and code the concepts learned in the class (outside the class!). Do not be afraid to try things! This will improve your understanding and raise questions that you should feel free to bring forward in class. A quick word of advice: stay abreast of the material covered in class, and start your assignments on the day they are announced.
ALL work submitted for grading should be entirely YOUR OWN. Sharing of programs, code snippets, etc. is not permitted under ANY circumstances.
We encourage you to discuss the material and work together to
understand it. Here are our thoughts on collaborating with other
If you have any questions as to what types of collaborations are
allowed, please feel free to ask.
- Attending the TA Sessions and availing of their assstance in doing programming assignments is HIGHLY RECOMMENDED.
- The readings and lecture topics are group work. Please discuss
the readings and associated topics with each other. Work
together to understand the material. We highly recommend forming
a reading group to discuss the material -- we will explore many
ideas and it helps to have multiple people working together to
- It is OK to discuss the topics covered in the homeworks, to
discuss approaches to problems, and to sketch out general
solutions. However, you MUST write up the homework answers,
solutions, and programs individually without sharing specific
solutions, mathematical results, program code, etc. If you
made any notes or worked out something on a white board with
another person while you were discussing the homework, you
shouldn't use those notes while writing up your answer.
- Under ABSOLUTELY NO circumstances should you share computer
code with another student. Similarly, you are not
permitted to use or consult code found on the internet for any
of your assignments.
- Exams, of course, must be your own individual work.
Created on August August 23, 2019.