CS173: Intro to Computer Science

[ Course Info | Course Objectives and Goals | Resources | Instructors | Textbooks | Schedule | Grading | Course Policies | Course Details ]

Iris dataset scatterplot
TAP Class Diagram
SimBaby Wireless Respiratory Analysis with the Smart Fabric Bellyband
Welcome to CS173! In this course, we will explore together the ways in which computing positively affects our lives and helps us to understand and to interact with the world around us. We will learn to automate powerful functionality through the use of programming fundamentals. We will connect these fundamentals to underlying theory of Mathematics and Computer Science, and learn to apply that theory for good.

Course Info

  • Course Number and Title: CS173 - Intro to Computer Science
    • Section A
    • Section B
  • Credit Hours: 4 Semester Hours
    • Credit Hours include "contact time" in the classroom and outside course work. It is expected that the sum of classroom time and outside course work time should add up to three times the listed credit hours per week.
  • Course Webpage: https://BillJr99.github.io/Ursinus-CS173-Spring2022

  • LMS (Canvas): Canvas

  • Course Calendar: Import the course calendar into your favorite calendar app with this link!

  • Class Notebook: Access our class notebook here! If you are unable to access the notebook, please let me know and I will share the document with your account.

  • Academic Term: Spring 2021-22

  • Term Start and End: through

  • Course Prerequisites: No prior programming experience is assumed! People from all backgrounds with all levels of experience are welcome. As long as you have a laptop running Windows, Mac OS, or most variants of Linux, that was manufactured within the past 10 years, you will be able to do all of the assignments and participate in class.

  • Class Meeting Locations and Times:
    • Section A:
      • s from 10:00 AM to 10:50 AM in Pfahler 012
      • s from 10:00 AM to 10:50 AM in Pfahler 001
      • s from 10:00 AM to 10:50 AM in Pfahler 012
      • s from 10:00 AM to 10:50 AM in Pfahler 012
    • Section B:
      • s from 11:00 AM to 11:50 AM in Pfahler 012
      • s from 11:00 AM to 11:50 AM in Pfahler 001
      • s from 11:00 AM to 11:50 AM in Pfahler 012
      • s from 11:00 AM to 11:50 AM in Pfahler 012
  • Final Exam:
    • Section A: 2022/05/06 from 9:00 AM to 12:00 PM in PFA 012
    • Section B: 2022/05/07 from 9:00 AM to 12:00 PM in PFA 012
  • Course Description: Introduction to the field of computer science. Topics include: methods for computational problem solving, algorithm development techniques, processes for development of new technologies, and programming projects of increasing complexity in a high-level language with emphasis on good programming style. The course also includes exposure to advanced topics in computer science such as graphics, human-computer interaction, and software engineering. Recommended for students in mathematics; business and economics; and the natural sciences. No prior computer programming experience is assumed. Offered every semester. Three hours of lecture and one hour of laboratory per week.

Course Learning Objectives and Learning Goals

Learning Objectives

  1. Identify the appropriate control structures (if statements, for/do/while loops) to use to solve different problems
  2. To choose efficient solutions over brute force solutions
  3. Implement algorithms that utilize conditionals and iteration over data structures including Strings and Arrays to solve problems
  4. Describe and convert the encodings by which data types are stored as numeric values
  5. Identify and apply data types appropriate to the design of a programming solution to a given problem
  6. To design and implement appropriate unit tests for a given software system to detect errors in a program
  7. To appropriately use the debugger to correct an error in a program
  8. To solve problems using collections of data, including arrays
  9. To explain that computer data of all types are represented by collections of binary states

Learning Goals

  1. Articulate the difference between computer programming and computer science, and explain the role of programming in computer science.
  2. Become a patient problem solver by utilizing the edit -> compile -> run loop, along with basic debugging skills.
  3. Write software that is easy to read and to maintain by others.
  4. Implement and engineer multi-component systems that solve tangible problems.

The Questions

Throughout the course, we will be thematically guided by the Ursinus Questions:
  • What should matter to me?
  • How should we live together?
  • How can we understand the world?
  • What will I do?

Resources

Accommodations

Ursinus College and your instructor are committed to ensuring equal access and providing reasonable accommodations for all students. If you have, or think you have, a disability in any area such as, mental health, attention, learning, chronic health, sensory, or physical, please contact the Director of Disability Services.

Ursinus College is committed to ensuring equal access and providing reasonable accommodations for students with disabilities. The Institute for Student Success works with students who have any kind of disability, whether apparent or non-apparent, learning, emotional, physical, or cognitive, and need accommodations to increase their access to this learning environment. I encourage you to reach out to the Director of Disability Services, Dr. Dee Singley to discuss about supports and accommodations you may need. Dr. Singley’s office is located in the Institute for Student Success in Lower Wismer. You can schedule a meeting with Dr. Singley by using this link: https://dsingley.youcanbook.me/, by emailing her at dsingley@ursinus.edu or by calling her at 1-484-762-4329. Students can also review accessibility and disabilities services on the ISS website.

Peer Coaching

The Institute for Student Success offers Peer Coaching that you can sign up for anytime. The Institute for Student Success connects students to the resources, activities, services, and programs that can help students be successful, thrive, and persist to graduation. They offer academic skills workshops, one-on-one coaching, tutoring, and more. Contact them at instituteforstudentsuccess@ursinus.edu or 610-409-3400.

Tutoring

The Institute for Student Success has established specific tutoring sessions for students in our class. Please visit the tutoring site for the schedule and how to attend!

Religious and Spiritual Life Observance Policy

Per the Religious and Spiritual Life Observance Policy, students who expect to miss classes, examinations, or other assignments due to religious observance may notify me two weeks prior to the observance. I will be happy to discuss reasonable alternatives with you.

Wellness Center

Let's Talk Poster
The Wellness Center has a virtual drop-in crisis hour at 2-3 pm each weekday, which is available for students in crisis who need to be seen immediately by a clinician. Their resources are confidential and free to all students. Please consult the Wellness Center website for more information and the link to the virtual crisis hour. As a student, you may experience a range of issues that can cause barriers to learning or reduce your ability to participate in daily activities. These might include strained relationships, anxiety, high levels of stress, alcohol/drug problems, feeling down, health concerns, or unwanted sexual experiences. The Wellness Center provides free short-term individual counseling, group therapy, and referral services that are confidential and are not a part of your educational record. Call Wellness at 610-409-3100 between 9:00-5:00, M-F. If you or someone you know is experiencing a crisis after hours, call Campus Safety at 610-409-3333. For a local resource, Montgomery County Mobile Crisis is available for 24/7 telephone support at (855) 634-HOPE (4673). The National Suicide Prevention Hotline also offers 24/7 support at 800-273-8255. As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce a student’s ability to participate in daily activities. Ursinus College Wellness Center offers services to assist you with addressing these and other concerns you may be experiencing. If you or someone you know are suffering from any of the aforementioned conditions, you can learn more about the broad range of confidential mental health services available on campus via the Wellness Center by emailing wellness@ursinus.edu or calling 610-409-3100. If you are interested in more academic support, please contact the Institute for Student Success at instituteforstudentsuccess@ursinus.edu or 610-409-3400. If you find yourself struggling with your mental or physical health this semester, please let me know. I am one of many people here at Ursinus who care about you and your welfare. For example, the Wellness Center provides numerous health and counseling services, including free short-term individual counseling, group therapy, and referral services that are confidential and are not a part of your educational record. Contact the Wellness Center by emailing wellness@ursinus.edu or calling 610-409-3100.

Center for Writing and Speaking

The Center for Writing and Speaking is available for one-on-one and group appointments to advise you as you revise your writing projects and presentations. They will even support your personal projects and extracurricular activities! Please feel free and encouraged to review any and all writing and speaking work from this class with them.

Bear2Bear

The college recognizes that temporary financial hardships can impact students' access to course materials, as well as their access to opportunities on campus. Please be aware of the Bear2Bear fund, which has been established by donors to the college and provides special grants for students who have exhausted other sources of funding.

Help Room

The Math Help Room (Pfahler 102) is a great place to go if you are struggling and is managed by the Institute for Student Success. Students who have previously taken the course will be there to help you with the assignments.

Course Instructors and Drop-In / Office Hours

Role Name and Contact Information Drop-In / Office Hours
Professor William Mongan
Picture of Professor William Mongan

Phone: 610-409-3410
E-Mail: wmongan@ursinus.edu
Office: Pfahler Hall 101L
  • s from 12:00 PM to 12:30 PM in Pfahler Hall 101L
  • s from 12:00 PM to 2:00 PM in Pfahler Hall 101L
  • s from 12:00 PM to 2:00 PM in Pfahler Hall 101L
  • s from 12:00 PM to 2:00 PM in Pfahler Hall 101L

Sign up for a one-on-one appointment during my office hours!
Drop-In / office hours are certainly available for asking questions about the course, about your assignments, and other academic questions you may have. You do not need an appointment to come to drop-in hours, and you do not even need to have an agenda or set questions! You can come and just have a general chat about things with us. If you cannot make it to drop-in hours, you can contact us for an appointment as well. Drop-In hours are also for non-instructional topics of conversation: you can talk with me about your adjustments to college life, your long-term goals, advice about your academic journey, and most other things. If I don't know the answer to something or if I don't feel I am the best person to offer you advice about it, I will be happy to help connect you with the right people. In other words, don't be afraid to ask me things that you think are "off topic" - I love teaching because I love to be a resource for you on your journey. I'll be happy to see you there.

Textbooks

Required? Title Author Edition ISBN Freely Available?
Required
Picture of the cover of the book entitled Java for Everyone: Late Objects

Java for Everyone: Late Objects
Cay Horstmann 2nd Edition 978-1-118-06331-6
Recommended / Supplemental Think Java Allen Downey and Chris Mayfield 1st Edition 978-1491929568 Online Version
Recommended / Supplemental Runestone CS Awesome Online Version
Please Note: The cost of the book may be prohibitive for some students, so please note that renting the book is much cheaper. Please communicate as early as possible if you are having trouble obtaining the book, rather than keeping this to yourself, so that we can work on a solution together. If you are experiencing a financial hardship, please consider the Bear2Bear Emergency Fund for temporary relief applications.

Course Schedule

Week Date Title Readings Deliverables Handed Out Deliverables Due
Week 1 Course Overview: What is Computer Science?
Week 1 Course Overview Continued
Week 2 A Brief History of Computer Science
Week 2 Data Types and Variables
  • Runestone Ch. 1.3 - Variables and Data Types
Week 2 Programming Statements, Expressions, and Operators
Week 2 Expressions and Variables
Week 3 Expressions and Variables
Week 3 Lab: Kepler's Third Law
  • Runestone Ch. 2.9 - Using the Math Class
Week 3 Ranges and Quantization of Data Types
Week 3 Number Systems and Encodings: RGB Color and ASCII Text
Week 4 Number Systems and Encodings: RGB Color and ASCII Text
Week 4 Lab: Debugging
Week 4 Debugging
Week 4 Boolean Logic Expressions
  • Horstmann Ch. 3
  • Runestone Ch. 3.1 - Boolean Expressions
Week 5 Conditionals
  • Runestone Ch. 3.2 - if Statements and Control Flow
  • Runestone Ch. 3.5 - Compound Boolean Expressions
Week 5 Lab: Story Telling with Conditionals
Week 5 Conditionals
  • Runestone Ch. 3.3 and 3.4 - if-else Statements and else-if statements
  • Runestone Ch. 3.6 - DeMorgan's Laws
Week 5 Functions
Week 6 Functions
  • Runestone Ch. 2.4 - Calling Functions with Parameters
Week 6 Lab: Functions
Week 6 Functions
  • Runestone Ch. 2.5 - Calling Functions that Return Values
Week 6 Testing
Week 7 Strings
Week 7 Lab: Unit Testing
Week 7 Strings
  • Runestone Ch. 2.7 - String Methods
Week 7 Strings
Week 9 Iteration
  • Runestone Ch. 4.3 - Loops with Strings
Week 9 Lab: Financial Aid Calculator
Week 9 Applications of Iteration: Introduction to Cryptography
  • Quiz: Functions and Testing
Week 9 Iteration with the for Loop
  • Horstmann Ch. 4
  • Horstmann Ch. 4.2 - for Loops
Week 10 Iteration, Randomness, and the while loop
  • Horstmann Ch. 6.3-6.6
  • Runestone Ch. 4.1 - while Loops
Week 10 Lab: Iteration
Week 10 Iteration with the do loop
Week 10 Iteration
Week 11 Coding Style and the Code Review
Week 11 Iteration and String Manipulation Workshop
Week 11 Iteration over Strings
Week 11 File I/O
  • Horstmann Ch. 7
Week 12 Arrays
  • Horstmann Ch. 6.1
  • Runestone Ch. 6.1 - Creating and Accessing Arrays
Week 12 Lab: Words with Classmates
Week 12 Arrays
  • Runestone Ch. 6.2 - Traversing Arrays
Week 12 The ArrayList and Generic/Template Data Structures
  • Horstmann Ch. 6.8
  • Runestone Ch. 7.1 through 7.2 - ArrayList Objects, Iteration, and Loops
Week 13 The ArrayList and Generic/Template Data Structures
Week 13 Lab: Words with Classmates Continued
  • Horstmann Ch. 6.3
Week 13 2D Arrays
  • Horstmann Ch. 6.7
  • Runestone Ch. 8.1 - 2D Arrays
Week 13 2D Arrays
  • Runestone Ch. 4.4 through 4.5 - Nested Loops and Loop Analysis
Week 14 Arrays Workshop
Week 14 Workshop: ASCII Art Assignment
Week 14 Arrays Workshop
Week 14 Arrays Workshop
Week 15 Algorithms: Searching
Week 15 Workshop: Iris Dataset Assignment
Week 15 Classes and Object Data Types
  • Horstmann Ch. 8
  • Runestone Ch. 5.1 - Anatomy of a Java Class
  • Runestone Ch. 2.8 - Wrapper Classes
  • Runestone Ch. 5.2, 5.4, 5.5, and 5.7 - Constructors, Accessors, Mutators, and Static Methods and Variables
Week 15 Algorithms: Sorting
Week 16 Algorithms: Recursion
  • Runestone Ch. 10.1 - Recursion
Week 16 Final Project Group Workshop
Please note the following holidays this term:
Please note the following key calendar dates:
  • Add Deadline:
  • Drop with a W Deadline:

Grade Breakdown

Letter grades will be assigned on the scale below at the end of the course. "Grade grubbing" is not conducive to professional practice; every assignment has or will have very precise expectations and point breakdowns, and I will evaluate submitted work carefully according to these standards. I will also return assignments in a timely manner, and the running weighted grades will be updated frequently. Therefore, I expect a commensurate level of respect from you. In sum, you should know where you stand at all times, there will be plenty of opportunities to improve your standing, and there should be no surprises at the end of the course.

Grading Table

Item Weight
Programming Assignments 35%
Labs 25%
Pre-Lab Exercises 20%
Quizzes 10%
Final Project 10%

Letter Grades

Letter Grade Range
A+ 96.9-100
A 93-96.89
A- 89.5-92.99
B+ 87-89.49
B 83-86.99
B- 79.5-82.99
C+ 77-79.49
C 73-76.99
C- 69.5-72.99
D+ 67-69.49
D 63-66.99
D- 59.5-62.99
F 0-59.49

Course Policies

Netiquette in Online Discussion Boards infographic
Courtesy of the Online Education Blog of Touro College.

Classroom Environment and Inclusivity Standards

My goal is to foster a environment in which students across all axes of diversity feel welcome and valued, both by me and by their peers. Axes of diversity include, but are not limited to, age, background, beliefs, race, ethnicity, gender/gender identity/gender expression (please feel free to tell me in person or over e-mail which pronouns I should use), national origin, religious affiliation, and sexual orientation. Discrimination of any form will not be tolerated. Furthermore, I want all students to feel comfortable expressing their opinions or confusion at any point in the course, as long as they do so respectfully. As I will stress over and over, being confused is an important part of the process of learning computer science. Therefore, I will not tolerate any form of put-downs by one student towards another about their confusion or progress in the class. Learning computer science and struggling to grow is not always comfortable, but I want it to feel safe. Much of this material is probably new to everyone, and those with some prior experience likely recall a time when it was new to them, too. Remember that this is not a competition: helping others to grow is itself a richly rewarding professional development opportunity. In order to allow for equitable access to class for students who may be attend and participating remotely, I may record our class sessions. These recordings will only be available on our Canvas site. I will announce that we are recording in the beginning of any classes of this kind; out of respect and privacy for me and all class members, please do not download, copy, or redistribute class recordings.

Online Communication Policy

Since this is a class-wide communication, the following rules apply to message groups and electronic communications:
  1. Students are expected to be respectful and mindful of the classroom environment and inclusivity standards.
  2. They are equally applicable to a virtual environment as they are in class.
  3. Students are not permitted to share direct answers or questions which might completely give away answers to any homework problems or labs publicly on Microsoft Teams. When in doubt, please send me a direct message there.
  4. I will attempt to answer questions real time during my virtual drop-in / office hours. Otherwise, I will make every attempt to respond within 24 hours. Of course, students can and should still respond to each other outside of these intervals, when appropriate!
  5. Students may ask anonymous questions.

Course Management Systems: Canvas, Microsoft OneNote, and Microsoft Teams

We will be using Canvas to post all of the grades. For the most part, we will submit work using Canvas as well. For class activities and notes, we will be using OneNote, and for other discussions and announcements for the course, including messaging me directly with questions, we will use Microsoft Teams. OneNote and Teams are linked to your Office suite through Ursinus, so you are automatically enrolled. There you can ask and answer questions about the lecture content and assignments.

Since it is likely that students will have similar questions, it is much more efficient for me to answer them there so the whole class can see the answer, so it is possible that I will ask you to re-send a question publicly that I get in an e-mail. If you'd prefer, I could anonymize the question as well, but I'd like you to have the opportunity to post it so that you are credited with having such a good question!

Collaboration Policy and Academic Integrity Policy

Communication between students is allowed (and encouraged!), but it is expected that every student's code or writeups will be completely distinct! Please do not copy code off of the Internet (repurposing code from the Internet will probably make it harder anyway because the assignments are so specialized). Please cite any sources in addition to materials linked from the course website that you used to help in crafting your code and completing the assignment.

See the Course Management page in the Faculty Handbook for an explanation of college policies on plagiarism and other academic honesty violations.

To encourage collaboration, students will be allowed to choose one "buddy" to work "near" during the assignment. Students are still expected to submit their own solutions, but they are allowed to provide substantial help to their designated buddy, and even to look at the buddy's code during the process. Students must indicate their buddies in the README upon assignment submission. Please let me know if you would like a buddy but are having trouble finding one.

Below is a table spelling out in more detail when and how you are allowed to share code with people (table style cribbed from Princeton CS 126).

Please Note: The terms "exposing" and "viewing" exclude sending or ingesting electronically, which would be considered copying. Exposing and viewing are normally done in the context of in-person working or in the help room. In addition, "Other People" includes internet sources!
Your Buddy Course Staff Course Grads Classmates Others
Discuss Concepts With OK OK OK OK OK
Acknowledge Collaboration With OK OK OK OK OK
Expose Your Code/Solutions To ALL EXCEPT
Assignments
OK OK NO NO
View the Code/Solutions Of ALL EXCEPT
Assignments
OK NO NO NO
Copy Code/Solutions From NO NO NO NO NO

If the work you submit appears to be copied from previous work or the collaboration policy has been violated in any way (including working with more collaborators or "buddies" than the course deliverable specifies) according to the College Academic Honesty policy, regardless of intent, then it may be an academic dishonesty case, and it will be referred to the Associate Dean for Academic Affairs. I am required to make this report in every occurrence, so it is best to speak with me first if there are any questions about the policy or expectations. You should feel free to have these conversations with me anytime prior to making your submission without fear of penalty. Finally, aside from the collaboration policy here, it is expected that your work is your original work. You must cite any collaborations or references that you use. You may have a friend or relative with computing experience, but they should not do your assignments, labs, etc., for you.

Flexible Submission Policy

In the absence of accommodations arranged in advance with the instructor or college, all assignments are due at 10:59PM Eastern Time on the date(s) stated on the schedule. Assignments will be accepted without prior permission following this time with a points deduction of 4% per day if submitted before 10:59 PM Eastern Time on the day submitted. Each student will receive a total of 10 "slack days" for the semester with which to waive these grade reductions; for example, one assignment may be submitted 10 days late, or two assignments may be submitted 5 days late, with no grade reduction. Sould an exemption to this policy be requested and granted, a 5% per day reduction will be applied. This policy does not apply to extra credit opportunities: extra credit will not be awarded for assignments submitted under the flexible submission policy. Late work cannot be accepted after the final class meeting, nor during final exams week, nor after the exam. Students with accommodations will receive additional "slack days" as specified within the accommodations letter.

Incomplete Policy

A grade of I may only be granted by permission of the Office of the Dean. A petition to the Office of the Dean will only be made upon written request by the student, including all information requested by the Office of the Dean. Requests for a grade of I will only be made in situations where such a request is warranted. Specifically, the student's grade must be passing at the time the request is made.

Title IX

Title IX is a federal law, under which it is prohibited to discriminate, harass, or commit misconduct on the basis of gender or sex. The Title IX Coordinator is available to receive inquiries and to investigate allegations in this regard.

Inclement Weather and Class Cancellation Policy

In the event that the College closes due to inclement weather or other circumstances, our in-person class sessions, drop-in / office hours, labs, or other meetings will not be held. I will contact you regarding our plan with regard to rescheduling the class or the material, any assignments that are outstanding, and how we can move forward with the material (for example, any readings or remote discussions that we can apply). If necessary, I may schedule online virtual sessions in lieu of class sessions, and will contact you with information about how to participate in those. I will communicate this plan to the department so that it can be posted on my office door if it is feasible to do so. This policy and procedure will also apply in the event that the College remains open but travel conditions are hazardous or not otherwise conducive to holding class as normal. Should another exigent circumstance arise (for example, illness), I will follow this policy and procedure as well.

Miscellaneous Policies

  • Attendance Policy: It is anticipated that all classes in Spring 2022 will take place in-person. Remote teaching will only be allowed in extenuating and short-term circumstances. Students who are unable to attend class due to quarantine, isolation, or Covid-like symptoms in advance of test results should contact their instructors to make up work they have missed. Ursinus students are expected to attend class regularly and may receive penalties, including failing grades, for excessive non-health related absences. The Office of Academic Affairs, the Office of Student Affairs, and the Wellness Center do not provide excused absences from class. Students experiencing significant health problems or other issues that may prevent them from performing adequately in their academic work and/or attending class for a number of days should notify the Institute for Student Success (Stephanie Stefanik, sstefanik@ursinus.edu; 610-409-3472), which can assist students with faculty notifications. Students who wish to discuss reasonable accommodations can contact Dr. Dee Singley (dsingley@ursinus.edu).
  • Masking Guidelines: Students are expected to follow any college policy requiring mask wearing on campus, in addition to following any guidance faculty provide for their individual classes. Masks should be available in every academic building, if needed.

Student Perception of Teaching Questionnaire (SPTQ)

I will be soliciting student feedback through the SPTQ and possibly through other forms of commentary. This feedback greatly assists me and the department as we develop our courses and overall curriculum for this program. This course has benefitted from the feedback of those students who took the course before you, and your feedback will help maintain and improve the course for those to follow. I strongly encourage you to participate in this important and valuable process.

Syllabus Subject to Change

I will do my best to provide all relevant information about the course on this syllabus. Sometimes, exigent circumstances, the pace of the class, or other circumstances will warrant minor revisions to the syllabus. For example, inclement weather or other campus closure might affect the course schedule and assignment deadlines; in addition, I may find that the class benefits from spending more time on a particular topic, and adjust accordingly. Although I try to avoid rescheduling drop-in / office hours, it may become necessary from time to time to accommodate other events in the College. Should any revisions be necessary, I commit to making any revisions in my estimation of the best interests of the class, and commit to communicating those changes to you as soon as I make them.

Course Details

Overview

Computer science is the study of how machines interact with data and the way in which machines can be used to solve problems. It is a mathematical discipline, but one which is often much more “hands on” than most fields of math. One important aspect of computer science is computer programming, or the process of writing code, or instructions for a computer to execute in a language a computer can understand. With programming languages, we can tell the computer how to automate calculations that are tedious and slow for humans to do by hand, and how to translate algorithms (recipes to solve problems) into code. In this course, we will learn one such language called Java, and we will use this language to explore an interdisciplinary array of computer science problems, including but not limited to:

  • How to encrypt data and hide information.
  • How to make computer generated art and music.
  • How to efficiently store and manipulate records.
  • How to make simple video games.

The course will gradually build up skills by providing “skeleton code” or other scaffolding that students fill in to do more complicated tasks, but by the end of the course, students will be able to write programs from scratch with multiple interlocking components.

A Word on Background and Inclusivity [1]

It is often the case that some students have had a good amount of programming experience before they start this course, either as part of a high school curriculum or on their own. However, no prior knowledge whatsoever is assumed, so we start from scratch. It is a human tendency to show off how smart or knowledgeable we are to let everyone around us know, but it can be distracting and very discouraging to people who have not seen the material before, and it can quickly poison a classroom environment. If there’s an advanced topic you would like to discuss, my office door is open, and I can give you a nearly unlimited supply of extra things to challenge you. But please keep it to yourself. I also expect those of you with more experience to help those in our community who are new. Conversely, if this is brand new to you, do not worry! Some of our best senior computer science majors at Ursinus started off with no experience, and our goal is to get everyone on the same page in this course.

A Word on Patience and Debugging [1]

Computer programming can often be frustrating, since not only do computers have very little tolerance for mistakes in their language (so-called “syntax errors”) that will cause a program to not even run, but even if you manage to get a program to run, it still may not behave as you were intending it to. Computers will do exactly what you tell them to do in code, so you will have to figure out where you told the computer something different from what you intended. This process is called debugging, and it is time consuming and difficult even for very experienced programmers. So do not be hard on yourself if your programs don’t work the first time around (they rarely do, even if you’ve been programming for decades!). But be sure you leave yourself adequate time to work on the assignments, because the amount of time it takes to resolve issues can be unpredictable.

Inevitably, you will fall into this trap. So don’t beat yourself up too much when you do…but do listen to the advice! When you track down a bug, read each line of code one-line-at-a-time, and ask yourself what that line of code does. Write down the variable values on paper, or better yet, use a step debugger to keep track as you work through your code. If you have a runtime error that causes your program to quit, look at the error text, called a Stack Trace, which will tell you what line of code caused your program to fail.

Tips for Getting Help

When you’ve been working on a problem for a while and you’ve tried everything you know how to do (for example, using the step debugger, and looking at the line of code reported by the error’s line number to understand what it might be telling you), it’s a good idea to get help from the TA or the instructor. When you do this, bring a few things with you to make our session more productive! For example, please have ready:

  • The error itself
  • What line of your code caused the error
  • What you tried so far (the debugger, for example), and what you observed
  • What inputs you used on the program to trigger the error
  • What you exepcted to happen, and how your observed result differs

Homework

Pre-Lab Exercises

Roughly once every week, students will be expected to engage with pre-lab material. These are videos we’ve produced or curated to help introduce concepts that we’ll be going over in-class. It is expected that you will read the readings for the class and complete the pre-lab exercises by 10:59PM the night before class. Sometimes, these exercises may include a “book survey” of questions or reflective prompts based on topics covered in your background reading. Class exercises will offer tutorials and background to prepare you for and enhance our in-class activities, and also will provide me with a pre-assessment as I plan our class agenda. Full credit will be given as long as a reasonable attempt is made at every question, as part of the class participation grade. It is not so important that you answer every question of every exercise correctly, but it is critically imortant that you participate and engage meaningfully with the exercises before our class sessions.

Labs

Every week, we will have a lab session where students get a chance to practice concepts we just learned in a safe and collaborative environment. Tasks will be given that serve as warm-ups for the larger assignments, and final submissions will be graded on a scale from 0 to 2. Students will have a chance to refine their submissions until the Friday of every week, and there will be help from the Lab T.A.s listed above.

Assignments

The bulk of the grade in the course will be earned by completing labs and individual programming assignments. Be sure to start them early! Note that collaboration and sharing rules differ slightly for labs and assignments.

Classroom Participation

Classroom activities are intended to directly benefit you as you practice with the material from the class. However, participating in these activities also provides you an opportunity to develop interpersonal and collaborative skills by working with others! Some ways to help your fellow classmates in class are as follows:

  • Helping to teach a student a topic during office hours.
  • Certain calls for participation in class
  • Particularly helpful or insightful messages on Microsoft Teams
  • Finding mistakes in the book or on the assigned homework and labs

Group Work [1]

In addition to ordinary participation that follows the natural rhythm of a lecture, on many days there will be at least one followup problem, which is a question that follows on the heels of newly presented material. Students will split into small groups and try to write some code to address a particular problem. When a group of students believe they have figured out the answer, they raise their hand. The other students can continue to work while I verify that the answer is correct. If the answer is correct, and the students present the answer to the class. If the group is not correct upon my checking, then the groups continue this process until one gets it correct.

Classroom Etiquette [1]

For classroom attendance, the following rules apply:

  • Please be attentive during class. There will be class exercises that involve coding, but class time should be used for learning computer science. It is imperative that technology be used for this purpose during our class time together. Alternatively, please try to think of this as a safe space away from social media. We could all use a break, and we are fortunate to have a good excuse to make that space.
  • Please follow common courtesy. For instance, you can bring food and drink as long as it’s not distracting, but please clean up after yourself if you do. Our janitorial staff deserves the utmost respect and help with their job.
  • In-class exercises and “low stakes” activities will take place individually and in groups to assess our progress together. These exercises will be given both synchronously (for example, in-class activities, pair programming exercises) and asynchronously (for example, pre-lab exercises, peer code reviews, book surveys) and will be graded on a participation basis.
  1. This introduction is adapted from Dr. Tralie’s CS173 Course Syllabus 2 3 4