COSC 235 Programming & Problem Solving

Spring 2021

Syllabus

Instructor

David A. Sykes, Ph.D.

Class meetings

Section A: MWF 11:30-12:20 in CCES 109.

Office hours

MWF 2:00-3:30 P.M.
TR 9:00-10:45 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. (COSC 350 Data Structures & Algorithms is the first real 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 develop algorithms to solve problems and then translate those algorithms to Python so a digital computer can execute the algorithm.

Goals

  • To be able to develop algorithms to solve problems and express those algorithms in pseudocode.
  • To be able to read Python code and figure out what it computes.
  • 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 (as 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, ©2021, ISBN 978-1-60797-910-4. 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.

Piazza

You need an account at Piazza. Accounts are free. We’ll be conducting all class-related discussion here this term. The quicker you begin asking questions on Piazza (rather than via emails), the quicker you’ll benefit from the collective knowledge of your classmates and instructors. I encourage you to ask questions when you're struggling to understand a concept—you can even do so anonymously.

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 meeting remotely, sometimes during class meetings and sometimes for office hours. Portions of class meetings will be recorded and then be made available on the web. I encourage you to install the app on your computer and/or mobile device instead of using a web browser. If you have a spare computer monitor, then I recommend your using it to extend the desktop on your laptop computer so you can view the screen being shared while also viewing a separate window on your computer.

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

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 the weightings shown in the table. If at some point we are forced to switch to remote-only learning then the weightings for the tests and the final exam might be revised.

Component Weight
Homework 25%
Projects 30%
Tests 30%
Final exam 15%
TOTAL 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 usually due two hours 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.

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 two tests during the semester. The first will be administered after we cover Chapter 12. The second will be administered after we cover Chapter 19.

Tests will be given in Mimir or on paper. You may use an index card containing notes while taking a test on paper. You may use your notes and the textbook while you are taking a test in Mimir, but you may not use any other resources, including web resources, apps on your computer, and assistance from other people. Tests will be timed.

The average of the two test scores will be used in computing the final weighted score.

Projects

The best way to learn to code is to write a lot of it. Consequently, 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.

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. The final exam will be most likely be given online (Mimir) and will have a time limit.

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

Class meetings

We are fortunate to be meeting in a classroom that can accommodate all of us even with appropriate social distancing. Consequently, all of us can attend class meetings in person starting with the second week of classes. The first week classes will meet remotely using Zoom.

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

You are expected to attend class meetings in person if you are well. You must wear a mask covering nose and mouth in the classroom and sit at least six feet from others.

If you are not well, you are expected to attend class meetings remotely via Zoom if you can. The General Policy Regarding Attendance in the Wofford College Student Handbook makes you responsible for catching up on any missed classes.

If necessary, we will move to a synchronous, blended or a synchronous, remote model. Under those models, class meetings will be held in person and/or using Zoom. You will be expected to be in each of those Zoom meetings.

Computer usage during class meetings

Bring a charged laptop to each class meeting if you can. We will often work in-class exercises using a laptop. However, I will expect your laptop to be closed unless I direct you to use it. Take notes on paper. Your open laptop is usually a distraction not only for you, but for other students near you.

If you are remote and using your laptop for a Zoom connection, try to get access to a second monitor. That will facilitate your being able to see what is being done via screen sharing and what you will do as part of an in-class exercise.

Office hours

I will make every effort to keep the office hours listed at the top of this syllabus. If I must cancel or move office hours, I will announce the change in Piazza.

You do not need to make an appointment to meet with me during office hours. Just drop in via Zoom. The same meeting ID and password will be used for each instance of office hours. (They are different from the ones used for class meetings.) I am usually on campus during office hours and you can meet with me in my office as long as we observe social distancing. I will look at your computer screen by either connecting your computer to my external monitor or by having you share your screen using Zoom.

I appreciate your meeting me during my office hours since it is time I have set aside and cannot easily use for another purpose. However, I realize that you might have conflicts. You are welcome to contact me to set up an appointment. If you do, list some times that you are available. Please do not ask me when I am available. Or you are welcome to drop by my office if you think I might be there.

Late work

You must meet homework and project deadlines. You may be able to submit a project late if both of these conditions are met:

  1. You contact me at least a day before the deadline to request an extension. In the request, include:
    1. a description of the problems you are facing
    2. how much more time you need
  2. You submit by the deadline the work you have completed so far even if you receive an extension.

Communication

Post questions and comments about this course on the Q&A page at Piazza. You are encouraged to respond to a question or to edit a response to a question. We are all learning together. If you send me a question via email or via private Piazza 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. I will usually respond within 48 hours to messages 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. However, keep in mind that teaching is my job and not my whole life.

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.

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?

Collaboration

  • You may discuss a project with another person.
  • You may work together to figure out how to attack a problem or develop an algorithm.
  • You may describe an issue you are having, such as a bug in your code, and get suggestions for resolving it.

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

Cheating
  • You are cheating when you copy code from someone else or when you allow someone to copy from you.
  • You are cheating if you let someone else edit your code—or if 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 as a part of a team. 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 present and 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 and/or an opportunity to fix any problems and raise the score.

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. Take care of this during the first week of classes and before the first quiz.

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.

Week Topics Chapter
04 JAN
Introduction
Problem Solving and Patterns
Syntax Highlighting
1
2
4
11 JAN
Elementary Data Types
Variables and Assignment
Input and output
5
6
7
18 JAN
Functions, Objects, Statements, and Expressions
The Python Standard Library
8
9
25 JAN
Strings
10
01 FEB
Lists
Program Errors
11
12
08 FEB
Creating Functions
13
15 FEB
Conditional Statements
14
22 FEB
Definite Loops
Indefinite Loops
15
16
01 MAR
File Input and Output (I/O)
17
08 MAR
Dictionaries and Sets
18
15 MAR
Classes
19
22 MAR
Building applications—Part 1
29 MAR
Building Applications—Part 2
Wrap-Up
20
05 APR Final exam: Wednesday, April 7, 2:00–5:00 P.M.