|1. Description - |
|This course is an introduction to basic computer programming concepts using an object-oriented language. It is intended for students who may wish to take C S 1A or C S 2A, but would like a more gradual entry to computing foundations prior to taking those faster-paced courses. Coding topics include hands-on practice with software engineering tools, simple programs, variables, control structures, functions, and input /output. Concept topics include the comprehension of specifications, adherence to style guidelines, and the importance of testing to ensure that programs are usable, robust and modifiable.|
|Advisory: Satisfactory score on the mathematics placement test or MATH 105 or 108; concurrent enrollment in ESLL 25 or ENGL 209.|
|2. Course Objectives - |
|The student will be able to: |
- Demonstrate how to use an Integrated Development Environment (IDE) to write a program.
- Write well documented code in a clear, industry-accepted style.
- Choose an appropriate data type in which to store a program's data.
- Convert an English description of a numeric calculation into an expression the computer can evaluate correctly.
- Incorporate user input into a program to interact with the user.
- Use appropriate control structures to execute instructions in different sequences.
- Write a reusable function that solves a common problem.
- Write code that uses an existing Application Programming Interface (API) to solve a specific problem.
- Interpret the specifications for, and design and implement solutions to, problems from different application areas.
|3. Special Facilities and/or Equipment - |
- Access to a computer laboratory with the appropriate compilers.
- Website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor). This applies to all sections, including on-campus (i.e., face-to-face) offerings.
- When taught via Foothill Global Access on the Internet, the college will provide a fully functional and maintained course management system through which the instructor and students can interact.
- When taught via Foothill Global Access on the Internet, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.
|4. Course Content (Body of knowledge) - |
- Writing vs. running a program
- Use of command, control, and option keys
- Navigation through the operating system file structure through well-organized storage and retrieval of files
- Storage and retrieval of files to/from a server
- Use compiler, editor and IDE
- Interpretation of APIs
- Methodology and Style
- Test-driven and iterative development methods
- Compiler errors vs. logic errors
- Separation of data and computation
- Acceptable indentation options
- Standards and conventions
- Data Types
- Primitive data
- Numeric data
- Character and string data
- Boolean data
- Creating named constants
- Built-in (language-defined) classes as compound types
- Evaluating and creating complex arithmetic expressions
- Concatenation and string expressions
- Logical expressions and Boolean algebra
- Unformatted output
- Simple formatted output
- User input
- String data
- Receiving numeric data directly
- Receiving string data and converting to a numeric type
- Basic Control Structures
- statement block
- Programmer-defined Functions
- local variables
- returned value
- Predefined Application Programming Interface
- local variables
- returned value
- Applications used throughout course in selected areas
- Business and finance
|5. Repeatability - Moved to header area.|
|6. Methods of Evaluation - |
- Tests and quizzes
- Written laboratory assignments which include source code, sample runs and documentation.
- Final examination
|7. Representative Text(s) - |
|Roberts, Walter, The Art and Science of Java, Addison Wesley, 2008. |
Savitch, Walter, Absolute C++, 3th Edition, Wiley, 2008.
|8. Disciplines - |
|Computer Science |
|9. Method of Instruction - |
- Lectures which include motivation for syntax and use of the object-oriented language, APIs, functional programming, example programs, and analysis of these programs.
- On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
- A programming assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each programming assignment and submit their completed lab work.
- A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publically with other class members.
- Detailed review of programming assignments which includes model solutions and specific comments on the student submissions.
- In person or on-line discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs.
- When course is taught fully on-line:
- Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
- Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.
|10. Lab Content - |
- Using an IDE to write source code for a project and run it.
- Distinguish source code from a recording of the run of a program.
- Include both the source code and a recording of the run in an electronic file(s) for submission.
- Identify a program's errors as originating in the compiler, the program logic, the user's runtime behavior, or the organization of the project in the IDE.
- Using iterative development to progressively refine a project's features to fit a specification.
- Write and test a program that implements just one of a project's required features.
- Add the implementation of a second required feature to the project and test thoroughly.
- Complete the project by implementing and testing the remaining features one by one.
- Perform regression testing after the implementation of each new feature.
- Using Test Driven Development to speed up debugging
- Write test code first that does not run.
- Implement the code required to make the test code run successfully.
- Developing programs that are well designed and easy to modify
- Outline a project first in English in an abstract way, and make this outline the project's documentation.
- Separate data and computation in a program
- Use named constants to keep numbers out of a program
- Choose an appropriate data type for a program's storage
- Use a consistent and standard indentation style in the source code
- Writing expressions to be evaluated by the computer
- Correctly translate an English description of a numeric calculation into an expression that the computer can evaluate.
- Get data from the user in whole numbers and convert so that the calculation takes place with floating point operations and results.
- Write a complex boolean expression.
- Use String manipulations to achieve a specified result.
- Writing a program that interacts with the user
- Accept character data at runtime from the user to fill a program's variables with values.
- Accept numerica data from the user at runtime to use in calculations
- Controlling the order in which program statements are executed
- Use branches
- Use loops
- Use function or method calls and returns
- Enclose groups of statements into blocks to achieve a desired execution sequence.
- Using functions or methods to write code without repetition
- Write a function or method with no parameters and no returned value
- Write a function or method with both parameters and a returned value
- Use the scope of variables to keep data as locally as possible
- Read an API to find the information needed to effectively call a function or method documented there.
|11. Honors Description - No longer used. Integrated into main description section.|
|12. Types and/or Examples of Required Reading, Writing and Outside of Class Assignments - |
- Textbook assigned reading averaging 20 pages per week.
- Reading the supplied handouts and modules averaging 10 pages per week.
- Reading on-line resources as directed by instructor though links pertinent to programming.
- Reading library and reference material directed by instructor through course handouts.
- Writing technical prose documentation that supports and describes the programs that are submitted for grades.
|13. Need/Justification - |
|This course is a required core course for the AS degree in Computer Science. |