CS 115: Programming I, Spring 2013
Links:
[Course Home]
[Course Info]
[Schedule]
[Resources]
[Programming Tools]
[Moodle]
[CS 115W]
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.
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
- Improve understanding of the concepts and theories of science and technology
- Understand the interconnected and ever-changing relationships among the natural, physical, and technological sciences
- Critically assess the social and ethical implications of science and technology in relations to their daily lives
- 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
- 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.
- 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.
Consolidated Syllabus
You may download the course description, objectives, syllabus, and schedule in a consolidated pdf:
http://rivoire.cs.sonoma.edu/cs115/syllabus_consolidated.pdf