Bryn Mawr College
CMSC 109: Introduction to Computing
Fall 2022
Course Materials
Prof. Deepak Kumar
General Information
Instructor(s)
Deepak Kumar
202 Park Science Building
526-7485
dkumar at brynmawr dot edu
https://cs.brynmawr.edu/~dkumar/
Lecture Hours: Mondays & Wednesdays from 1:10p to 2:30p
Office Hours: Tue 10:20a to 11:30a, or by appointment.
Lecture Room: Room 245 Park Science Building
Lab: Attendance in labs is REQUIRED.
- Lab: Mondays 2:40p to 4:00p in Room Park 231
Laboratories
- Computer Science lab Room 231 (Science Building)
- You will also be able to use your own computer to do labs for assignments this course.
Teaching Assistants Hours: After Week 2 TA Hours will be 6:00p to 10:00p in Room 231 PSB.
- Amina Ahmed
- Grace Choe
- Juno Bartsch
- Lily Davoren
- Maha Attique
- Mia Ellis-Einhorn
- Renata Del Vecchio
- Yen Nguyen
Texts & Software
Main Texts (Required)
- There are no texts to purchase for this class. We will provide online materials as the course progresses.
- Software: Processing 3.x (download here). The software is also installed on all Lab computers (Windows side).
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.
|
|
Syllabus
Course Description: Class Number: 2048
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, animation, and visual media/data. 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 principles. Students are required to register for the weekly lab. Prerequisites: Must pass either the Quantitative Readiness Assessment or the Quantitative Seminar (QUAN B001).
Enrollment Limit; 24.
The following topics will be covered:
Introduction to the Java/Processing Language & Environment
Pixels
Sketches
Interaction
Variables
Conditionals
Loops
Functions
Objects
Arrays
Algorithms
Debugging
Libraries
Translation & Rotation
Data Visualization
Animation
Images
Text
Data Input
From Processing to Java
Lab Attendance: Attendance in Lab is required.
Important Dates
August 29 |
First class meeting |
Exam 1 |
September 28 |
Exam 2 |
November 7 |
December 5 |
Last class meeting |
Exam 3 |
December 7 |
Creating a Welcoming Environment
All members of the Instruction Staff are dedicated to the cause of improving diversity, equity, and inclusion in the field of computing, and to supporting the wellness and mental health of our students.
Diversity and Inclusion
It is essential that all members of the course community – the instructor, TAs, and students – work together to create a supportive, inclusive environment that welcomes all students, regardless of their race, ethnicity, gender identity, sexuality, or socioeconomic status. All participants in this course deserve to and should expect to be treated with respect by other members of the community.
Class meetings, lab sessions, office hours, and group working time should be spaces where everyone feels welcome and included. In order to foster a welcoming environment, students of this course are expected to: exercise consideration and respect in their speech and actions; attempt collaboration and consideration, including listening to opposing perspectives and authentically and respectfully raising concerns, before conflict; refrain from demeaning, discriminatory, or harassing behavior and speech.
Wellness
Additionally, your mental health and wellness are of utmost importance to the course Instruction Staff, if not the College as a whole. All members of the instruction staff will be happy to chat or just to listen if you need someone to talk to, even if it’s not specifically about this course.
If you or someone you know is in distress and urgently needs to speak with someone, please do not hesitate to contact BMC Counseling Serices: 610-526-7360 (610-526-7778 nights and weekends). If you are uncomfortable reaching out to Counseling Services, any member of the Instruction Staff will be happy to contact them on your behalf.
We understand that student life can be extremely difficult, both mentally and emotionally. If you are living with mental health issues such as anxiety, depression, ADHD, or other conditions that may affect you this semester, you are encouraged to discuss these with the Instructor. Although the details are up to you to disclose, the Instruction Staff will do their best to support and accommodate you in order to ensure that you can succeed this course while staying healthy.
Assignments
- Assignment#1 is posted (Due on Wednesday, September 14): Click here for details.
- Assignment#2 is posted (Due on Wednesday, September 21): Click here for details.
- Assignment#3 is posted (Due on Wednesday, October 19): Click here for details.
- Assignment#4 is posted (Due on Wed, November 2, 2022): Click here for details.
- Assignment#5 is posted (Due on Monday, November 21, 2022): Click here for details.
- Assignment#6 is posted (Due on Monday, December 5, 2022): Click here for details.
Lectures
- Week 1 (August 29, 31)
August 29: Course Introduction. What is computing? Creative Computation. Algorithms (How to draw an owl? A cat?). Identifying primitives. From algorithm to oprogram. Programming Languages. Getting started with Processing.
Slides: Click here.
August 31: 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. Drawing irregular shapes and curves.
Read/Do: Processing Tutorials: Getting Started, Coodinate Systems and Shapes.
Lab#1: Handouts were given out in class today. Please complete the Lab by Tuesday, September 6.
This week's TA Hours: Tue-Wed-Thu from 6:00p t0 10:00p in Room 231 PSB.
- Week 2 (September 5, 7)
September 5: Labor Day, no class. TA Hours on Sunday and Mondat (Sep 4, 5) will be from 6:00 to 8:00p. Regular Hours will resume starting Tuesday, Sep 6 (from 6:00p to 10:00p).
September 7: More shapes: poly lines, curves, text, arcs,. Dynamic sketch structure. Variables: an introduction.
Read: Processing Turorial: Color.
Assignment#1 is posted (Due on Wednesday, September 14): Click here for details.
- Week 3 (September 12, 14)
September 12: Variables: System defined (width, height, mouseX, mouseY); User defined: definition, types (int, float, char, String, boolean, values, operations. Assignment statement ('='). Printing values of variables, The color type. Random numbers: generating and using.
September 14: Drawing sketches using variables. Functions: defining functions. Functions that do a task versus functions that return values. Coordinate translation and rotation.
Read: Lecture Notes - Variables, Functions.
Assignment#2 is posted (Due on Wednesday, September 21): Click here for details.
- Week 4 (September 19, 21)
September 19: Functions: those that do a task versus those that return a value. Examples. A closer look at parameter passing. Functions terminology: invocation, return, formal parameters, actual parameters.
Sketches: BasicTruck, Robot, MovingTruck, Distance.
September 21: 2D-Transformations: translate, rotate, scale. Saving and restoring context: push() and pop(). Conditional statements: if-else, comparison operators, logical operators, boolean expressions.
Read: Lecture Notes: - 2D Transformations. Conditions.
Sketches: BasicTruck2, Ball.
- Week 5 (September 26, 28)
September 26: Controlled Repetition: Loops. While-loop, for-loop. Using loops: examples.
Assignment#3 is posted (Due on Wednesday, October 19): Click here for details.
Read: Controled Repetition. Sketches from today's class are included in the lecture notes.
September 28:
Exam 1 is today.
- Week 6 (October 3, 5)
October 3: Introduction to Trigonometric rations (sine, cosine, tangent). Using trigonometric functions in geometry to draw. Examples.
Read: Trigonometry Notes.
Sketches: Exam1Q9, TrigLine, Spokes, Polygon.
October 5: Short-hand expressions (using ++, +=, *=, etc.). Perlin Noise versus random(). Using Perlin Noise in sketches.
Sketches: RandomLines, PerlinNoiseLines, StringArt.
- Week 7 (October 10, 12)
Fall Break, no classes.
- Week 8 (October 17, 19)
October 17: Doing data visualization in Processing: Pie Charts. Organizing large data: arrays. Declaring, creating, and using arrays. Arrays as parameters to functions. Examples.
Sketches: PieChart.
October 19: Arrays: Examples. Drawing Bar Charts. The functions min(), max(), map(). For-each loops for arrays. Examples.
Sketches: MajorsPieChart (using arrays).
Read: Arrays Notes.
Week 9 (October 24, 26)
October 24: Drawing Pie Charts. Reading data from a data file using loadSTrings(). Parsing data into data arrays. Drawing bar graphs, and line plots. Examples.
Sketches: Pie Chart with Data File, Bar Chart, Line Plot.
Read: Arrays Notes.
Assignement#4 is posted (Due on Wed, November 2, 2022): Click here for details.
October 26: Data Visualization: Acquiring data, cleaning data, visualizing data. Examples.
Sketches: Twitter Stock Prices Plot.
Read: Tutorial on Strings and text. Arrays Notes.
- Week 10 (October 31, November2)
October 31:Displaying text. Using Fonts in Processing. String type and operations. Introdiction to Objects and Object-Oriented Programming (OOP). Doing OOP in Processing.
Read: Tutorial on Strings and text. OOP Notes.
Sketches: Fonts and Text, Ball Class, Ball Sketch.
Data: TheRaven.
November 2: Object-Oriented Programming (OOP): Vocabulary: class, instance, object, attributes, constructors, methods. Example: modeling a bouncing ball.
Read: OOP Notes, String Notes.
Sketches: Ball Sketch, Ball class.
- Week 11 (Novmber 7, 9)
November 7: Exam 2 is today.
November 9: Review of Exam 2. More on Objects. Examples.
Lab for Week#10 is posted. Click here.
Sketch: RobotApp, Robot Class.
Assignment#5 is posted (Due on Monday, November 21, 2022): Click here for details.
- Week 12 (November 14, 16)
November 14: Design and incremental program implementation. An example: Visualizing US Zip code locations.
Sketch(es): Zip Code App, Place class, Data file.
November 16: Inheritance in OOP: subclass, superclass, override methods, super(), extends. Examples.
Sketch(es): Widgets App, Widget class, Square class, Circle class.
- Week 13 (November 21, 23)
November 21:Fun with images. Loading and displaying images. Image processing. Examples.
Sketch: Obamicon (load your own image).
November 23: No class today. Safe travels and Happy Thanksgiving!
- Week 14 (November 28, 30)
November 28: Recursion. Writing recursive functions: for computing; for drawing. Examples.
Sketch: RecursionExamples (Other examples are in your lab handout).
November 30: What is computer science?
A look at different algorithms for a given problem. A taste of lgorithm analysis. Searching: linear search versus binary search.
- Week 15 (December 5, 7)
December 5: From Processing to Java. Review and course wrap up.
December 7:
Exam 3 is today.
Course Policies
Submission and Late Policy
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.
Any 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.
Communication
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 student 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.
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.
Grading
All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7,
1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:
Exams |
65% |
Exam 1 |
20% |
Exam 2 |
20% |
Exam 3 |
25% |
Assignments |
25% |
Lab Attendance |
10% |
Incomplete grades will be given only for verifiable medical illness or other such dire circumstances.
Submission and Late Policy
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.
Any 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.
Study Groups
All submitted work should be solely your individual work. We encourage you to discuss the material and work together to understand it. Here are our thoughts on collaborating with other students:
- 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 understand them.
- It is fine 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. You are not permitted to use or consult code found on the internet for any of your assignments.
If you have any questions as to what types of collaborations are allowed, please feel free to ask.
Created on August 1, 2022.