COSC 235 Programming & Problem Solving

Fall 2021

Syllabus

Instructor

David A. Sykes, Ph.D.

Class meetings

Section A: MWF 8:30am–9:20am in Olin 218.
Section B: MWF 11:30am–12:20pm in Olin 218.

Office hours

TR 8:30–9:20 A.M., 2:30–3:30 P.M.
MWF 9:30–11:00 A.M, 1:00–2:30 P.M.
Or by appointment or happenstance.

Telephone / e-mail

(864) 597-4524 / sykesda@wofford.edu

Students learn to develop programs using an object-oriented language. Students are introduced to problem solving and algorithm development with emphasis on good programming style. Completion of this course with a C or higher is a prerequisite for all 300- and 400-level courses in Computer Science.

One focus of this course is learning how to write computer programs using the Python 3 programming language. A programming language provides a way to express an algorithm such that a digital computer can run it.

Another focus is learning how to develop algorithms to solve problems, a critical step in writing programs.

Goals

By the end of the course, you should be able to:

  • TDevelop algorithms to solve problems and express those algorithms in pseudocode.
  • Read Python code and figure out what it computes.
  • Translate an algorithm expressed in pseudocode to Python code.
  • Understand fundamental programming language constructs: variables, expressions, functions, control structures, and data types.
  • Build a foundation for more advanced computer science courses.
Required textbook

Using Python 3 to Solve Problems Using a Computer, 2nd edition by David Sykes and Dave Toth, Linus Learning, ©2021, ISBN 978-1-60797-910-4. Note: I do not make any money from your purchase of this book.

Mimir Classroom

You need an account for Mimir Classroom. Accounts are free. Most homework assignments, projects, and tests will be completed in Mimir. We will set up your account during the first class meeting.

Piazza

You need an account at Piazza. Accounts are free. You will receive an email message inviting you to the class Piazza page.

We’ll be conducting all class-related discussion here this term. The quicker you begin asking questions on Piazza (rather than via email messages), the quicker you’ll benefit from the collective knowledge of your classmates and instructor. I encourage you to ask questions when you’re struggling to understand a concept—you can even do so anonymously.

Moodle

The COSC 235 Moodle course page will have a link to Mimir and to Piazza. Scores for homework, exams, and projects will be recorded in Moodle. The cumulative grade shown in Moodle should reflect your final weighted score. If you notice a problem with the computation, please let me know and I will try to correct it.

Your grade for the course will be based on a weighted average of scores for quizzes, programming projects, and a paper/presentation. The usual grading scale applies: 93–100: A, 90–92: A-, 87–89: B+, 83–86: B, 80–82: B-, 77–79: C+, 73–76: C, 70–72: C-, 60–69: D, 0–59: F.

A final average will be calculated using two methods using weightings shown in the table. The higher of the two values will be mapped to a letter grade. Under Method #2, the homework and test components have a lower weightings, and the final exam is weighted more. Note: The Moodle Gradebook will reflect Method #1 weightings.

Component Weighting #1 Weighting #2
Homework 25% 10%
Projects 30% 30%
Tests 30% 15%
Final exam 15% 45%
TOTAL 100% 100%
Homework

Homework assignments prepare you for class. An assignment usually consists of some reading in the textbook and some exercises, often to be completed in Mimir. Homework is usually due two hours before the start of the class meeting for which it was assigned.

You are allowed to use any resources you find useful for completing homework assignments, including working with other students in the class. Your primary goal should be to get a perfect score on every homework assignment so you will be prepared for the next class meeting.

The homework component of the final weighted average is computed using a simple weighted mean of scores: the percentage obtained by dividing the sum of points you earned by the sum of point values for the assignments. For example, let's say there are two assignments, the first worth 15 points and the second worth 25 points. If your score on the first assignment is 9 and your score on the second is 21, then your score for both is (9 + 21) ÷ (15 + 25) = 75%. Note that the result can be different from averaging the percentage scores for the two assignments, ((9 ÷ 15) + (21 ÷ 25)) ÷ 2 = (60% + 84%) ÷ 2 = 72%.

Tests

You will take three tests during the semester. The first will be administered after we cover Chapter 7. The second will be administered after we cover Chapter 14. The third will be administered after we cover Chapter 18.

You may bring an index card, maximum size 6"×9", containing handwritten notes to each test.

Projects

The best way to learn to code is to write a lot of programs. Consequently, programming projects play a very important role in this course. Each of the projects will give you the opportunity to write a Python program that utilizes what you’ve learned so far. It is important that you start working on a project right after it is assigned so you can get help if you have trouble getting started or fixing bugs. It’s also important that you get each programming running correctly.

The projects component of the final weighted average is computed using a simple weighted mean of scores, the same method used for homework.

Final exam

The final exam will assess how well you reached the objectives for the course. You must be present for the final exam.

You may bring an index card, maximum size 6"×9", containing handwritten notes to the final exam.

Logistics

Most class meetings will start with a brief review of the homework assignment and continue with discussions and/or exercises based on what has been covered so far. Some in-class exercises will require you to work on a laptop computer (if you have one) or work with another student in the class. You may have a laptop computer open on your desk only if I direct you to use it. Most projects will be started during a class meeting.

You are encouraged to take copious notes during class. Take handwritten notes on paper or on a tablet.

Handwritten notes engage more of the senses. The brain is more active, so the learning process is enhanced. This is actually part of an area of study called “haptics.” Researchers in this arena are studying the way our minds and bodies interact in the learning process.

It’s the “tactile” or “kinesthetic” learning idea in action. The more physically active you are, including taking handwritten notes, the more likely you are to remember information well.

You may not use a laptop to take notes during a class meeting unless doing so is an approved accommodation.

Attendance

You are expected to attend class meetings. The Class Attendance Policies described in the Wofford College Student Handbook (pp. 81ff) makes you responsible for catching up on missed classes. I suggest you find a “buddy” from whom you can get notes in the event you are absent. I will post links to handouts in Piazza. I will also post code (or links to code) that we write in class.

Do not attend class if you are not feeling well and might have a contagious illness. Seek medical attention at the Wellness Center. A doctor's note concerning absences is not required.

You must be present for the final exam.

Late work

You are expected to complete all assigned work on time.

I understand that sometimes you must miss a class, a test, or a project or homework deadline. As long as such occurrences are not excessive, I will work with you as best I can to help you succeed in the course.

You must meet homework and project deadlines. To submit your work late, you must contact me by 3:00 P.M. of the day before the deadline to request an extension. Your request must indicate how much more time you need. Assume that I will give you more time if you do not hear back from me. I will still expect you to submit by the deadline the work you have completed so far even if you are given an extension.

Communication

Piazza

All questions about coursework, including about projects, must be posted at the Piazza Q&A page. If you send me a question via email or via private post that should be posted publicly at Piazza, I will direct you to post your question publicly. After you post it publicly, I will reply to the question.

Do not post working code at Piazza. Do not include in a response either “fixed” code or a detailed description of how to change code to get it to work. It is acceptable to post non-working code.

Feel free to respond to a question or to edit a response to a question. We are all learning together.

Note: Anonymous Piazza posts are anonymous to classmates but not to me.

Email

It is appropriate to send me email messages for private matters, such as letting me know you will be absent or that you’d like to schedule a meeting.

I usually respond to email messages sent Sunday through Thursday within 24 hours and within 48 hours when sent on a Friday or a Saturday. I usually respond much sooner to Piazza posts since I have the Piazza app on my phone and receive notifications.

Academic integrity

The Honor Code requires faculty, staff, and students to maintain a high standard of individual honor and integrity. Work represented as your own must be your own.

I encourage you to help others in the class or get help from others on projects. However, you may not write code for another student or provide code to copy. Conversely, you may not get code from another student. Doing any of these things is a violation of the Honor Code.

There is a distinction between collaborating and cheating.

When collaborating,

  • One person may discuss a problem or algorithm with another person.
  • One person may work with another person to figure out how to attack a problem.
  • One person may describe a problem and get suggestions for solving it.
  • One person may describe to another person what some code must do, but not provide that code.
  • One person may help another person to debug code, but must not type the working code.

Ultimately, you must implement a solution to the problem yourself.

On the other hand, cheating occurs when

  • One person copies code from another person or copies code available on the internet.
  • One person allows another person to copy code.
  • One person edits another person’s code, either to write new code or fix a bug in existing code.
  • Two people are working along with another and decide together what code to write, even if they are working on separate computers.

For some projects, you might be given an option to work with one other student in the class. In this case, you are allowed to share all your work with your teammate. However, you are expected to do all of the work together. One student should not work without the other present. However, one of you may meet with me without the other being present.

Don’t cheat because you are up against a deadline. Manage your time effectively. Start each assignment as soon as it is given. If you run into a glitch:

  • Seek help from me.
  • Submit on time the work you have done, even if it is not fully completed. You will likely get partial credit for your work.

Access and Accommodations

It is the policy and practice of Wofford College to create an inclusive and accessible learning environment. This course is intended for all students, including those with mental or physical disabilities, illness, injuries, impairments, or any other condition that tends to negatively affect one’s equal access to education.

If you have not yet established services through Accessibility Services, but have a temporary health condition or permanent disability that keeps you from fully accessing the space, content, and experience of this course, you are welcome (but not required) to visit the Accessibility Services Accomodations channel in my.wofford.

If you have already established accommodations with Accessibility Services, please communicate your approved accommodations to me at your earliest convenience so we can discuss your needs in this course.

The schedule below is based on chapters in the textbook. We will cover the chapters in order. If we can move faster, we will. The first test will be given after we complete Chapter 12. The second test will be given after we complete Chapter 19.

Fall Semester 2021
Mon Tue Wed Thu Fri
Sep 1
  1. Get started
  2. Syllabus review
  3. Mimir setup
Sep 2 Sep 3
  1. Introduction
  2. Problem Solving and Patterns
Sep 6
  1. Problem Solving and Patterns
Sep 7
Sep 8
  1. Syntax Highlighting
Sep 9
Sep 10
  1. Elementary Data Types
Sep 13
  1. Elementary Data Types
Sep 14
Sep 15
  1. Variables and Assignment
Sep 16
Sep 17
  1. Input and Output
Sep 20
  1. Working with input and output
Sep 21
Sep 22
  1. Exam 1
Sep 23
Sep 24
  1. Input and Output
Sep 27
  1. Functions, Objects, Statements, and Expressions
Sep 28
Sep 29
  1. Functions, Objects, Statements, and Expressions
Sep 30
Oct 1
  1. The Python Standard Library
Oct 4
  1. Strings
Oct 5
Oct 6
  1. Lists
Oct 7
Oct 8
  1. Program Errors
Oct 11
  1. Creating Functions
Oct 12
Oct 13
  1. Creating Functions
Oct 14
Oct 15
  1. Conditional Statements
Oct 18
  1. Conditional Statements
Oct 19
Oct 20
  1. Exam 2
Oct 21
  1. Fall Academic Holiday
Oct 22
  1. Fall Academic Holiday
Oct 25
  1. Definite Loops
Oct 26
Oct 27
  1. Definite Loops
  2. Indefinite Loops
Oct 28
Oct 29
  1. Indefinite Loops
Nov 1
  1. File Input and Output (I/O)
Nov 2
Nov 3
  1. File Input and Output (I/O)
Nov 4
Nov 5
  1. Dictionaries and Sets
Nov 8
  1. Dictionaries and Sets
Nov 9
Nov 10
  1. Dictionaries and Sets
Nov 11
Nov 12
  1. Dictionaries and Sets
Nov 15
  1. Dictionaries and Sets
Nov 16
Nov 17
  1. Exam 3
Nov 18
Nov 19
  1. Classes
Nov 22
  1. Thanksgiving break
Nov 23
  1. Thanksgiving break
Nov 24
  1. Thanksgiving break
Nov 25
  1. Thanksgiving break
Nov 26
  1. Thanksgiving break
Nov 29
  1. Classes
Nov 30
Dec 1
  1. Classes
Dec 2
Dec 3
  1. Classes
Dec 6
  1. Classes
Dec 7
Dec 8
  1. Classes
Dec 9
Dec 10
  1. Classes
  2. Wrap-Up
Dec 13
  1. Final Exam (Section A)
  2. 9:00-Noon
Dec 14
Dec 15
Dec 16
Dec 17
  1. Final Exam (Section B)
  2. 2:00-5:00