CptS 121: Program Design and Development

WSU Tri-Cities
Spring, 2017

Document Update History

Date Update
4/20 Allowing extra time for HW8 and HW9.
4/19 Added note about needing to compile and run under gcc and MinGW. (This will take effect after the Spring, 2017, semester.)
4/6 Added (written) Final Exam date and time.
3/8 Added reminder to not send binary (including zip) files.
2/16 Lab 5 link is active.
2/13 Lab 5 is now designated take-home (to allow for Presidents' Day).
1/31 Added reminder to include "cpts360" on email subject line. Added "Text Editor" (section on vim).

Instructor

Bob Lewis
Associate Professor, WSU TC
West 134D
Campus Phone: 2-7178
Off-Campus Phone: (509) 372-7178
bobl@tricity.wsu.edu
(For faster response, be sure all email about this class -- including assignment submissions -- includes "cpts121" in the subject line.)
Web Page: http://www.tricity.wsu.edu/~bobl
Office Hours: W 3-5pm

Lab Assistant

Rob Emmel
remmel@tricity.wsu.edu

Teaching Assistant

Manny Bonilla
Veterans Center
Campus Phone: 2-7143
Off-Campus Phone: (509) 372-7143
emmanuel.bonilla@tricity.wsu.edu
Office Hours:
M 11am-1pm, West 151 (CSLab)
TuW 11am-1pm, Learning Center

System Administrator

David Search
CIC 225
(509) 372-7334 (on campus: 2-7334)
tchelp@tricity.wsu.edu

Lecture

TuTh 4:15-5:30pm, BSEL 103

Lab

M 4:15-7pm, CIC 101R

Catalog Description

Formulation of problems and top-down design of programs in a modern structured language for their solution on a digital computer.

Prerequisites

Math 106 with a C or better, or Math 108, 171, 172, 182, 201, 202, 206, 220, 273, 315, or ALEKS math placement score of 70% or higher.

Goals

Students passing this course will be able to

Resources

Required Text

Kochan, Stephen G., Programming in C (4th. ed.), Addison-Wesley, 2015.

This text is in at the bookstore.

Unless explicity permitted, laptops, tablets, and other electronic media devices are not permitted in exams. This means that open-book exams permit only printed books. Getting this text in electronic form is therefore not advised.

Recommended Text

Kernighan and Ritchie, The C Programming Language (2nd ed.), Prentice Hall, 1988.

Web Page

http://www.tricity.wsu.edu/~bobl/cpts121

Text Editor

Although not required for the class, it is strongly recommended that students acquire facility with the vim text editor. You can run an iteractive tutorial about vim by entering $ vimtutor on a Linux or MinGW terminal emulator. There's also an on-line tutorial here. You can read a recent article about vim here.

Coding Standards

C code written for this class should comply with the coding standards established by the instructor, which can be found at http://www.tricity.wsu.edu/~bobl/cpts121/coding_standards.html . This reflects common C coding practices. Any departure from these should be commented in code.

This document may be added to as the course progresses, so it is the student's responsibility to verify that their homework follows the guidelines which are active at the time of their submission.

Points may be taken off assignments for violations of these standards, even if the code works.

Topics

These are the topics the course will cover:

Schedule

"--" indicates lectures carried over from the previous session. Readings in Kochan are indicated. This schedule will be revised as the course progresses, so check back periodically.

Week Mon Lab Tu Lecture Th Lecture
1 moved to Wed, 1/18 Lab 1: Basic Tools
Ch. 2
(reminder: Bring a USB thumb drive!)
1/10 1. Introduction to Computer Science
Ch. 1
1/12 2. Expressions and Variables
Ch. 3
Homework 0 (email face shot and preferred name) assigned
2 1/16 Martin Luther King, Jr. Day (campus closed) 1/17 3. Repetition
Ch. 4
1/19 --
3 1/23 Lab 2: Repetition 1/24 4. Selection
Ch. 5
1/26 --
Homework 1 (change) assigned
(due 2/9)
4 1/30 Lab 3: Selection 1/31 5. Arrays
Ch. 6
2/2 --
5 2/6 no lab 2/7 6. Functions
Ch. 7
2/9 --
6 2/13 Lab 4: Arrays 2/14 7. Recursion
Homework 2 (lander) assigned
(due 2/21)
2/16 --
7 2/20 President's Day (campus closed)
Lab 5: Functions (take-home)
2/21 TBD (or Midterm Review)
Homework 3 (laplace) assigned
(due 3/2)
2/23 Midterm
covering Units 1-6
8 2/27 Lab 6: grafic 2/28 8. Structures
Ch. 8
3/2 --
Homework 4 (plotz) assigned
(due 3/9)
9 3/6 Lab 7: Structures 3/7 9. Strings
Ch. 9
3/9 --
Homework 5 (sierpinski) assigned
(due 3/23)
10 3/13 - 3/17: Spring Break (no classes)
11 3/20 Lab 8: Strings 3/21 10. Pointers
Ch. 10
3/23 --
Homework 6 (monsterdb) assigned
(due 4/6)
12 3/27 Lab 9: Pointers 3/28 11. File I/O
Ch. 15
3/30 --
13 4/3 Lab 10: File I/O 4/4 12. Large Scale Programming
Ch. 14
4/6 --
Homework 7 (monsterquiz) assigned
(due 4/13)
14 4/10 Lab 11: Large Scale Programming 4/11 13. Dynamic Memory Management
Ch. 16
4/13 --
Homework 8 (monsterdb2) assigned
(due 4/24 -- extended)
15 4/17 Lab 12: Stacks 4/18 -- 4/20 --
Homework 9 (rpncalc) assigned
(due 5/1 -- extended)
16 4/24 Lab Final 4/25 TBD 4/27 Final Review
17 5/1 - 5/5: Finals Week (Written Final is Tuesday, 5/2 from 3:30-5:30pm in BSEL 103)

Grading

The grade will break down as follows:

20% midterm
40% final
25% homework
10% lab participation
5% class participation

Midterm and Final

The midterm will take up one 75-minute class period.

The final will be the usual two hours in duration and may cover material presented during the whole class, but weighted in favor of material introduced after the midterm.

Unless explicity permitted, laptops, tablets, and other electronic media devices are not permitted in exams. This means that open-book exams permit only printed books.

Homework

There will be several homework assignments, each consisting of one or two C programs. Each will require 1-2 weeks to complete. Email the C source code as an attachment to the instructor prior to the start of class on the due date.

For evaluation, all assignments will be compiled with the GNU C compiler, gcc, and run under the MinGW system as set up in our Lab. You are welcome to develop your code with another compiler such as Visual Studio's C (but not C++) compiler, but it is your responsibility to make sure it compiles and runs correctly under MinGW.

Just send the source code as an attachment. Binary files (including "zip" files and executables) can be silently blocked (for security reasons) by some email systems.

To compile your program (let's call it "foo.c"), the grader will do the following in a MinGW console:

$ gcc -Wall -Wstrict-prototypes foo.c -o foo

This should produce no errors or warnings and an executable "foo" that the grader can run. It should be all that is necessary to produce an executable program. Anything that requires more effort than this will cause points to be taken off or not to be awarded at all. Any "repairs" are at the discretion of the grader.

It is strongly recommended that you follow these same steps as a test to assure that problems don't arise with your submission.

Late penalty is a flat 10% point deduction. Late assignments may be turned in before the start of class up to one week after the original due date. After that, no credit will be awarded.

Lab Participation

Your lab grade is based on participation. Labs will be conducted as follows:

  1. Arrive at the lab and sign in with the lab assistant. (Late arrivals will lose points.)
  2. Collect a copy of the lab assignment.
  3. Complete the assigned tasks.
  4. Demonstrate any code you created to the lab assistant.

You may then leave the lab with full credit. If at the end of the lab you have not completed the tasks, you may still leave with full credit.

You may not do anything else on the lab computers than work on the assigned tasks.

Class Participation

The class will be more participatory than the usual lecture form. After the first lecture, everyone should come to class having done the reading. Each class will begin by dealing with any questions students have. Once those are resolved, the instructor may ask questions of the class to test their comprehension of the material. I may also pose problems for them to work in class, either individually or as a group.

"Participation" includes both asking questions and answering them (the instructor's or anybody else's). It also includes taking advantage of office hours.

Percentage-to-Letter Grade Mapping

The numerical grade is mapped to a final letter grade based on the instructor's subjective evaluation of the overall difficulty of the course, with the following constraints:

A numerical grade
in this range...
... guarantees a
letter grade which
is at least...
90 ≤ grade ≤ 100 A-
80 ≤ grade < 90 B-
70 ≤ grade < 80 C

As the course progresses, the instructor is free to revise these criteria downwards so that, for example, 87% might still result in an A-, but these ranges will not be raised.

Academic Integrity

Required Statement

As stated in the WSU Tri-Cities Student Handbook, "any member of the University community who witnesses an apparent act of academic dishonesty shall report the act either to the instructor responsible for the course or activity or to the Office of Student Affairs". The Handbook defines academic dishonesty to include "cheating, falsification, fabrication, multiple submission [e.g., submitting the same or slightly revised paper or oral report to different courses as a new piece of work], plagiarism, abuse of academic material. complicity, or misconduct in research." Infractions will be addressed according to procedures specified in the Handbook.

Course-Specific Policy on Academic Dishonesty

The fundamental requirement for all student work in this class is:

Unless otherwise explicitly permitted by the instructor, all work you turn in must be your own.

Any instance of academic dishonesty, as defined in the WSU Student Handbook, in this class will be dealt with severely (typically by failing the class) and reported to the WSU Office of Student Conduct.

Note in particular that it is dishonest not only to copy another student's work, but to permit another student to copy yours.

Nevertheless, realizing that students can assist each other in understanding general course material, there are limited ways in which student collaboration is permitted:

  1. You may communicate verbally with another student, as long as you do not communicate the answer or the other content of what you are going to turn in, whether code, mathematics, and/or text. A good way to work in this regard is for the student providing help to ask leading questions of the student needing help, letting them arrive at the answer themselves.

  2. You may draw diagrams and such on a whiteboard, chalkboard, or piece of blank paper to illustrate the verbal points made in (1), as long as you do not write what you are going to turn in. This record may not be photographed or otherwise retained.

It will be up to the discretions of the grader (if applicable) and instructor to determine if any assignment shows evidence of collaboration beyond these limits. Any attempt to circumvent the spirit of these rules will be treated as a violation of the fundamental requirement. If you are in doubt, do not give help to or request it from another student: That's what office hours are for.

Notice for Students with Disabilities

Reasonable classroom adjustments/accommodations are available for students who have a documented disability. Please notify the instructor (by email, if you like) during the first week of class of any accommodations needed for the course. All classroom academic adjustments and accommodations must be approved through the Disability Services Coordinator, located in West 269D, (509) 372-7351. Late notification may mean that the requested accommodations might not be available.

Safety

All Tri-Cities students should be familiar with the Campus Safety Plan, which may be accessed at http://www.tricity.wsu.edu/safetyplan , and with the University emergency management web site, which is http://oem.wsu.edu/emergencies .

The Writing Center (Required Statement)

The WSU Tri-Cities Writing Center offers free tutorial services to all undergraduate Washington State University students. Here, tutors can help you with various writing issues you may encounter. I urge you to meet with different tutors and find one with whom you work well. Students have found that the one-on-one attention such tutorials offer can be very helpful. The WSU Tri-Cities Writing Center is located upstairs in the CIC library. Walk-ins are welcome.