COSC 235 Programming and Problem Solving

Fall 2020

Syllabus

Instructor

David A. Sykes, Ph.D.

Class meetings

Section A: MWF 10:30-11:20 in Olin 220.

Office hours

MWF 1:30-3:30 P.M.
TR 8:30-9:20 A.M., 2:30-3: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.

The main focus of this course is to learn how to write computer programs using the Python 3 programming language. While you are learning Python, you are also learning about the constructs that underly most computer programming languages. You'll also learn how to design algorithms to solve problems, a key step in writing a program. Python is a way to express an algorithm in a way that lets a computer run it.

This is a programming course and not really a computer science course. This is a prerequisite for COSC 350 Data Structures & Algorithms, our first course in computer science.

Computer science is the study of computation—what can be computed and how to compute it. When a computer follows the steps of an algorithm coded in a programming language, the computer is doing computation. After this course you will be able to write programs in Python and be a better problem solver.

Goals

  • To develop skills to solve non-trivial problems using computational thinking.
  • To be able to translate an algorithm expressed in pseudocode to Python code.
  • To understand fundamental programming language constructs: variables, expressions, functions, control structures, and data types.
  • To build a foundation for more advanced programming techniques, including object-oriented design and the use of standard data structures (covered in COSC 350).
Required textbook

Using Python 3 to Solve Problems Using a Computer, 2nd edition by David Sykes and Dave Toth, Linus Learning, ©2020, ISBN 978-1-60797-910-4.

Mimir Classroom

Most homework assignments, projects, and tests will be completed in Mimir. You will access Mimir Classroom through Moodle.

Piazza

You need an account at Piazza. Accounts are free. Most communication outside of class will be done using our Piazza Q&A page.

Moodle

The COSC 235A 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, please let me know and I will try to correct it.

Zoom

We will use Zoom for class meetings. Portions of class meetings will be recorded and then be made available on the web. Note: It’s best to install the app on your computer and/or mobile device instead of using a browser.

The same meeting ID and password will be used for each class meeting all semester.

Python

You need to install Python 3.8 on the computer you will use for assignments and projects this semester. The computer app is free.

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 based on the weightings shown in the table. The higher of the two values will be mapped to a letter grade. Under Method #2, neither homework scores nor exam scores factor into the calculation.

Component Weight
Method #1 Method #2
Homework 25% 0%
Projects 30% 30%
Exams 30% 0%
Final exam 15% 70%
TOTAL 100% 100%
Homework

Homework assignments help you to prepare for class and will usually consist of some reading in the textbook and some exercises (to be completed in Mimir). Homework is due before the start of the class for which it was assigned. Deadlines are enforced by Mimir.

Homework is graded. Partial credit will seldom be awarded for incorrect answers to homework problems. If you are struggling with a homework problem, post a question about it at Piazza. You are allowed to use any resources you find useful for completing homework assignments, including consulting other students in the class.

Exams

You will take two exams during the semester. The first will be administered after we cover Chapter 12. The second will be administered after we cover Chapter 19.

All exams will be given online (in Mimir). You may use your notes while you are taking the exam, but you may not use any other resources, including web resources and assistance from other people. Exams will be timed. You may select your start time, but you must complete the exam in the time allotted.

Projects

Projects play an 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 coding right after a project is assigned so you can get help if you have trouble getting started or fixing bugs.

Final exam

The final exam will assess how well you reached the objectives for the course. The final exam will be given online (Mimir) and will have a time limit.

You may use the textbook and your notes from this class while taking the final exam. You may not use any other resources, including other people.

Logistics

This class will run in accordance with a Blended Synchronous (Flipped Classroom). You will be expected to prepare for a class meeting by performing a variety of tasks, including:

  • reading portions of a textbook
  • working homework problems
  • watching video tutorials
  • etc.

blended synchronous model using a flipped classroom

  • Blended means that there are in-person and online activities in the course for which you are responsible. While there is a significant portion of the class that happens online, this is not a self-paced course. Assignments have fixed due dates.
  • Synchronous means that students who are remote are actively participating in class during the scheduled meeting times.
  • Flipped means we will spend class meetings discussing readings, homework problems, and working on problems and projects.

You will be in one of three groups: A, B, or C. Groups A and B will attend class in-person one day a week and attend class remotely one day a week. Students in Group C will work fully remotely. Students in all groups should work synchronously unless there are extenuating circumstances.

During class meetings, in-person and remote students will work together in small teams to solve problems. That way in-person students can grab my attention to address issues.

Social distancing allows only half of the students to be in our classroom at one time. The first day of class will be completely remote. On the first day we will determine whether you are in Group A or Group B. Group C has already been set up. Some of you might join Group C temporarily if necessary. Note: I might revise group assignments during the semester.

Students in Group A will attend “in person” on Wednesday of the first week of classes and every other class meeting after that. Students in Group B will attend “in person” on Wednesday of the first week of classes and every other class meeting after that. The class on November 20, the Friday before Thanksgiving break, will be remote only. Check out the calendar.

We will use Zoom to support remote access. The links for class meetings and for office hours will be available in Piazza and Moodle. Portions of every class meeting will be recorded and made available online. The videos for a class meeting will be available in a Piazza post for that class.

Wearing a mask covering nose and mouth in the classroom is mandatory. A facemask is not a substitute for social distancing. Do not modify the seating arrangement in the classroom.

Attendance

Please evaluate your own health regularly. Do not attend class or other on-campus events if you are not feeing well. Seek appropriate medical attention for treatment of illness. A doctor's note concerning absences is not required.

You are expected to attend class sessions either in-person or remotely. The General Policy Regarding Attendance in the Wofford College Student Handbook makes you responsible for catching up on missed classes.

Class participation and active learning are important aspects of this class, so your engagement is critical to your success. However, I understand that sometimes you must miss examinations or other academic obligations affecting your grades because of illness, personal crises, and other emergencies. As long as such absences are not excessive (beyond two weeks of classes), I will work with you as best I can to help you succeed in the course. Contact me as soon as possible when such absences arise so we can make arrangements to get you caught up. This policy will not apply in the case on non-emergency absences.

If you will miss class on an “in person” day, please post without any details (anonymously if you prefer) a follow-up message to my Piazza post about the class and tag your post with open-seat so that a student in the other group can occupy your seat in the classroom. If you are in the other group and would like that seat then be the first to post in Piazza a claim for it.

If you will miss a class on a “remote” day, then let me know as soon as you can.

The final exam period is scheduled for 9:00-noon on Wednesday, December 9. You will take the final exam online in Mimir. You must complete the exam in the time allotted.

Conduct

When attending class in person or remotely, you should dedicate your full attention to class activities. When attending in person, take notes and keep your laptop and other devices put away until we need them. When attending remotely, keep your video on and take notes. Give a holler if you have a question.

Late work

You must meet project deadlines. To submit a project late, you must contact me at least a day before the deadline to get an extension. Let me know how much more time you need. I will still expect you to submit the work you have completed so far even if you receive an extension.

Note: Any code you submit that contains syntax errors will receive a score of zero.

Communication

Post questions and comments about this course at Piazza. Feel free to respond to a question or to edit a response to a question. We are all learning together.

All questions about the course, 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, my reply will direct you to post your question publicly.

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 okay to post non-working code.

I usually respond to email messages sent Sunday through Thursday within 24 hours—longer 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.

You can 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. However, I prefer that you post a private message via Piazza.

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

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 collaborate with others in the class—that is, help or get help from others. However, you may not write code for another student or provide code to copy. Doing any of these things is a violation Honor Code.

What is the distinction between collaboration and cheating?

During collaboration,

  • You may discuss a project with another person.
  • You may work together to figure out how to attack a problem.
  • You may describe an issue you are having and get suggestions for resolving it.

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

  • You are cheating when you copy a solution—or part of a solution—from someone else or when you allow someone to copy from you.
  • You are cheating if you let someone else edit your code—or you edit their code.
  • You are cheating if you are working along with another and decide together what code to write.

For some projects, you might be allowed to work with other students in the class. In this case, you are allowed to share all your work with your teammates. However, you are expected to do all of the work together. One student should not work without the others contributing.

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

  • Seek help from me, either by posting at Piazza or consulting with 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. Just make sure any code you submit contains no errors that prevent it from being executed.

Mimir has extensive capabilities for detecting plagiarized Python code. When completing a project or a coding problem on an exam, don’t copy another student’s code or allow another to copy yours.

Reasonable accommodations for students with disabilities

If you need accommodations, go to the Student tab in myWofford and investigate the Request Accommodations channel. I’ll make every effort to work with you.

The schedule below is based on chapters in the textbook. We will cover the chapters in order. If we can move faster, we will.

Week Topics Chapter
31 AUG
Introduction
Problem Solving and Patterns
Getting Python
Syntax Highlighting
1
2
3
4
07 SEP
Elementary Data Types
Variables and Assignment
Input and output
5
6
7
14 SEP
Functions, Objects, Statements, and Expressions
The Python Standard Library
8
9
21 SEP
Strings
10
28 SEP
Lists
Program Errors
11
12
05 OCT
Creating Functions
13
12 OCT
Conditional Statements
14
19 OCT
Definite Loops
Indefinite Loops
15
16
26 OCT
File Input and Output (I/O)
17
02 NOV
Dictionaries and Sets
18
09 NOV
Classes
19
16 NOV
Building applications—Part 1
23 NOV Thanksgiving Break
30 NOV
Building Applications—Part 2
Wrap-Up
20
07 DEC Final exam: Wednesday, December 9, 9:00-noon.