CS120 Software Design I

Instructor information

Instructor: W. Michael Petullo
Office location: 210 Wing Technology Center
Office hours: Monday, Tuesday, Wednesday, and Thursday 2:10 p.m–3:00 and by appt.
Telephone: (608) 785-6817
Email: wpetullo@uwlax.edu

Catalog description

An introduction to the fundamentals of software development; including software classes, objects, inheritance, polymorphism, logic, selection control, repetition control, subprograms, parameter passage, and rudimentary software engineering techniques. Students complete numerous programming projects using a modern programming language.

Prerequisites

MTH151, MTH175, or math placement test scores at or above MTH151

Time and location

Monday, Tuesday, Thursday and Friday at 1:10–2:05 p.m. Class meets for lectures in Wimberly 228 on Mondays and Thursdays. Labs take place on Tuesdays and Fridays in Wing 16.

Student learning objectives

This course follows the Computer Science Department’s learning objectives for CS120, which are listed below. The course schedule indicates the objectives covered by each lesson.

  1. Write Java programs using non-parallel control instructions, including assignment, method calls, if, while, do, and for.

  2. Write and evaluate expressions using literals, variables, parenthesis, and the following operators:

    a. Numberic: unary -, +, -, /, *, %, postfix ++, postfix --, =, !=, <, <=, >, and >=.

    b. Boolean: !, &&, and ||.

    c. String: +.

    d. Object: instanceof.

  3. Write and evaluate primitive expressions involving mixed types, widening, and casts.

  4. Write and evaluate declarations (including final variables), which demonstrate an understanding of local, private, public, and protected scope/access along with the use of the this notation.

  5. Write code that demonstrates an understanding of the principle of information hiding by choosing the correct scope from among instance variables, formal parameters, and local variables.

  6. Compose and evaluate code that demonstrates an understanding of object binding, the null notation, and orphan objects.

  7. Draw, interpret, and trace code using object diagrams.

  8. Draw and interpret class diagrams, including access annotations along with aggregation and inheritance relations.

  9. Develop programs involving all of the following algorithm patterns: variable content swap, cascading if instructions, counting loops, linear search, selection sort, object access shared by multiple classes, and method callback.

  10. Write and evaluate code that uses inheritance, constructor overloading, method overriding, and the super notation.

  11. Demonstrate an understanding of method preconditions and postconditions using informal logical descriptions.

  12. Identify and correct programs exhibiting infinite loops null-pointer exceptions, and array-index out-of-bounds exceptions.

  13. Debug by inserting print statements.

  14. Adhere to fundamental programming style conventions, including using meaningful identifiers, intelligent inclusion of comments, and proper indentation patterns.

  15. Write and evaluate code involving one-dimensional arrays.

  16. Write and evaluate code with import declarations.

  17. Write and evaluate code involving the following standard Java classes and methods:

    a. Object: equals and toString.

    b. String: length, charAt, toUpperCase, toLowerCase, substring, and indexOf.

    c. Math: random, abs, sqrt, trigonometric functions, pow, PI, and E.

    d. Scanner: nextX and hasNextX.

    e. System.out.print and System.out.println.

    f. GUI: JFrame, Container, JComponent, JButton, JTextField, and JLabel.

  18. Write and evaluate code involving event handling with JButtons and JTextFields.

Textbook

The publisher distributes the textbook for free at https://greenteapress.com/wp/think-java-2e/.

Classroom standards

Please be prepared to take notes using a pen and paper, or use discipline while taking digital notes. Do not use the Internet for personal reasons during class. Do bring a laptop or other device capable of running the compilers and other tools we use in class; any lecture might include hands-on exercises.

Perform your assigned reading and other preparation before arriving for class. I will expect you to participate in class discussions, and I might call on you to contribute.

Review the Board of Regents’ Student Academic Disciplinary Procedures concerning academic integrity. Cheating undermines the integrity of this university and shows disrespect toward the work of your classmates. Starting coursework early will help you to avoid the temptation of cheating. Plagiarism or cheating in any form may result in a failing grade, and it might also warrant harsher disciplinary action. “Students are responsible for the honest completion and representation of their work, for the appropriate citation of sources, and for respect of others’ academic endeavors.”

On perseverance and the scientific method

You will inevitably encounter problems while trying to complete your coursework. Sometimes the confusing interfaces that our software applications present will lead you astray, and other times you will simply make an error. When something goes wrong, try to fix the problem! Make small, incremental changes, and observe their effects. Most importantly, think about how systems work, and then consider why the error you are observing might have arisen. Occasionally, you should stop what you are doing and start from scratch. Learning how to better troubleshoot should be a beneficial side effect of this course.

Your textbook’s Appendix D is full of good suggestions concerning how to find and fix programming errors.

Graded events

Homework will be submitted through Aquinas, a grading system that provides immediate feedback. Refer to the course schedule for the sequence of homework assignments, exams, and the final exam. Your running grade will be available through Aquinas. (This class does not use Canvas.) Refer to the following table for the weight of each graded event.

Event Portion of grade
Homework 33% (3% per assignment)
Exams 37% (18½% per exam)
Instructor points 5%
Final exam 25%

Grade scale

Grades are assigned based on the following scale.

Range Grade
93–100% A
89–92% AB
83–88% B
79–82% BC
70–78% C
60–69% D
0–59% F

Late policy

Assignments are due the moment class starts. Late assignments will lose points according to the table below.

Tardiness Penalty
Up to 24 hours late 15% reduction
24–48 hours late 30% reduction
More than 48 hours late No credit

If some external circumstance causes you to be late, then you must notify your instructor in writing and before the assignment deadline in order to be considered for an exception. The act of notification does not automatically grant you an exception.