Catalog Description

(4 units) Lecture, 3 hours; laboratory, 3 hours. An overview of computer organization; arithmetic and logical expressions, decision and iteration, simple I/O; subprograms; principles of good programming style, readability, documentation, structured programming concepts; top-down design and refinements; techniques of debugging and testing. Use of the above concepts will be implemented in a standard high-level programming language.

Prerequisites: GE Math eligibility (satisfaction of ELM requirement) and English eligibility (satisfaction of EPT requirement). Students who do not meet these prerequisites will be dropped from the class unless they obtain instructor consent to take CS 115.

This course is currently taught using Python.

Important Dates

Exam 1:Thursday, September 25In lecture
Exam 2:Thursday, November 6In lecture
Final Exam (9:20 - 10:35 lecture):Thursday, December 118:00 AM -9:50 AM
Final Exam (10:45 - 12:00 lectures):Tuesday, December 911:00 AM -12:50 PM

Students who have scheduling conflicts on these dates should not take this class.

Course Materials and Resources

Textbook

John Zelle, Python Programming: An Introduction to Computer Science, 2nd edition (ISBN-13: 978-1-59028-241-0)

People

Dr. Ali A. Kooshesh Course Instructor
Roger BeighInstructor, lab 02
Noah MelconInstructor, labs 06
Jake ParisInstructor, labs 04 and 08

CS Administrative Coordinator: Liz Meyer
Email: meyerel@sonoma.edu
Office phone: 707-664-2667
Office location:Darwin 116

If you have a question about careers in computer science or need advising for the CS major or minor, talk to the CS administrative coordinator in Darwin 116 to schedule an advising appointment.

Help Schedule

You can get help in the following ways:

Online Resources

Moodle Gradebook

The course gradebook will be kept on Moodle so that you can check your grades and compute your average at any time. To access Moodle, go to the SSU homepage, sign in, and follow the link to Moodle.

Email List

Course announcements will be sent to your Sonoma email address, so you should check your email frequently.


Coursework and Grading

Course Activities

Lecture

You are responsible for all material presented in lecture and are expected to get the notes from another student if absent. You are also expected to spend additional time outside of class to master the lecture material. Resources available to you include your textbook, the instructor's office hours, and tutoring.

Quizzes

Quizzes, announced and unannounced, may be given in both lecture and lab. Missed quizzes cannot be made up.

Lab

The weekly lab allows you to practice programming with immediate feedback from the instructor and other students. Lab attendance is expected. Each week's lab assignment will be posted online and linked from the course schedule and Moodle. Lab writeups and code are due at 4:00 PM on or before Thursday unless otherwise specified.

Programming Projects and Code Reviews

Programming projects require you to take the skills you've learned in lecture and lab and apply them at a larger scale. They are a rewarding and challenging part of the course, and they require perseverance and time management skills. Projects must be a student's individual work, and the collaboration policy will be strictly enforced.

After each project, you will be expected to conduct a review of another student's code and produce a report evaluating its quality and adherence to the course coding standards. Code reviews are a standard part of professional software development and a great way to learn from other people's programs.

Exams

The exams cover the material from lecture, lab, and the textbook. Exams are cumulative, although they will emphasize recent material. You may bring one 8.5 by 11-inch handwritten sheet of notes (front and back); no other aid will be permitted. Makeup exams will be given only in extraordinary circumstances, and the instructor MUST be notified in advance.

Grading Policies

Grade breakdown:

Lab attendance and exercises20%
Programming projects and code reviews35%
Exams and quizzes45%

You must also pass each of these three components individually (60% or better) to receive a C- or better in the course. In other words, if you fail one or more of these three components, the maximum grade you can earn in the course is a D+.

Grading scale

93-100%90-92%87-89%83-86%80-82%77-79%73-76%70-72%67-69%63-66%60-62%Below 60%
AA-B+BB-C+CC-D+DD-F

Up to 3% may be added to your final grade at the instructor's discretion for constructive participation in the class. Constructive participation includes in-class participation and doing outstanding or extra work on assignments. No other adjustments of borderline grades will be considered.

Late assignments:

Labs: Late lab writeups, demos, and code will only be accepted with prior arrangement with the instructor.

Projects and code reviews: There is a 48-hour grace period associated with final project and code review deadlines. This grace period is designed to cover small personal emergencies and other unexpected events. No other consideration will be given for these small emergencies.

Regrade policy

Regrade requests will be accepted up to 7 days after an assignment or exam is returned. The reason for the regrade request must be explained in writing and submitted as a hard copy along with the assignment or exam to be regraded. Note that all regrade requests, except for those pointing out mistakes in the totaling of points, will cause the entire assignment or exam to be regraded. The adjusted grade may therefore be higher or lower than the initial grade.

Collaboration Policies

Lab collaboration policy

You are encouraged to work with other students in the labs. However, your lab writeups and code must be turned in individually, and you must be able to explain and stand by all of the work you turn in for credit.

Programming project collaboration policy

Programming projects must be your own work unless otherwise stated, and academic misconduct is taken very seriously. You may discuss ideas and approaches with other students and the course staff, but you should work out all details and write up all solutions on your own. The following actions will be penalized as academic dishonesty:

Exam collaboration policy

Exams must be your own work. You are allowed to consult only your own brain and your 8.5x11in handwritten cheat sheet. Quiz policies will vary and will be announced when the quiz is given. On both exams and quizzes, giving or receiving unpermitted aid will be penalized as academic dishonesty.

Penalties for Academic Dishonesty

Academic dishonesty will be severely penalized; at a minimum, you will receive a grade of 0 on the assignment. For more information, see SSU's cheating and plagiarism policy (http://www.sonoma.edu/UAffairs/policies/cheating_plagiarism.htm) and the Dispute Resolution Board website (http://www.sonoma.edu/senate/drb/drb.html).

University Resources

Disability Accommodations

If you are a student with a disability and you think you may require accommodations, please register with the campus office of Disability Services for Students (DSS), located in Salazar Hall - Room 1049, Phone: (707) 664-2677, TTY/TDD: (707) 664-2958. DSS will provide you with written confirmation of your verified disability and authorize recommended accommodations. This authorization must be presented to the instructor before any accommodations can be made. Visit http://www.sonoma.edu/dss for more information.

University Policies

There are important University policies that you should be aware of, such as the add/drop policy, cheating and plagiarism policy, grade appeal procedures, accommodations for students with disabilities, and the diversity vision statement. Go to this URL to find them: http://www.sonoma.edu/uaffairs/policies/studentinfo.shtml.

GE Information

This class satisfies the General Education category B3 requirement (Specific Emphasis in Natural Sciences). As of May 2008, the GE B3 objectives are

  1. Improve understanding of the concepts and theories of science and technology
  2. Understand the interconnected and ever-changing relationships among the natural, physical, and technological sciences
  3. Critically assess the social and ethical implications of science and technology in relations to their daily lives
  4. Improve problem solving and critical thinking skills through application of scientific knowledge using hands-on activities

More information can be found on the SSU GE homepage.

Course Goals and Objectives

  1. Develop algorithms for solving problems.
    • Use a programming language and a modern development environment to implement, test, and debug algorithms for solving simple problems.
    • Trace the execution of a variety of code segments and write summaries of their computations.
    • Create algorithms for solving simple problems.
    • Analyze and explain the behavior of simple programs involving fundamental programming constructs.
    • Identify, describe, and use primitive data types.
    • Modify, expand, and write short programs that use standard conditional and iterative control structures and functions.
    • Choose appropriate conditional and iteration constructs for a given programming task.
    • Design, implement, test, and debug programs that combine the above fundamental programming constructs.
    • Build robust code using exception handling mechanisms.
    • Implement basic numerical algorithms.
    • Describe common applications for, and write programs using, strings and lists.
    • Implement simple search algorithms.
    • Implement common quadratic sorting algorithms.
    • Describe the concept of recursion and give examples of its use.
    • Identify the base case and the general case of a recursively-defined problem.
  2. Use design strategies for managing complexity.
    • Discuss the importance of algorithms in the problem-solving process.
    • Explain why the creation of correct program components is important in the production of high-quality software.
    • Apply a variety of strategies to the testing and debugging of simple programs.
    • Construct and debug programs using the standard libraries available with a chosen programming language.
    • Conduct a personal code review (focused on common coding errors) on a program component using a provided checklist.
    • Analyze the extent to which another programmer’s code meets documentation and programming style standards.
    • Apply consistent documentation and program style standards that contribute to the readability and maintainability of software.
    • Select and use a defined coding standard in a small software project.
    • Refactor a program by identifying opportunities to apply procedural abstraction.
    • Apply the techniques of decomposition to break a program into smaller pieces.
    • Identify the relative strengths and weaknesses among multiple designs or implementations for a problem.
    • Design and use specialized data structures (object-oriented programming).

Note: this course's goals and objectives are based on the Association for Computing Machinery (ACM)'s Computing Curricula 2013. This course addresses the areas of Software Development Fundamentals, Software Engineering, and Algorithms and Complexity.