Foothill CollegeApproved Course Outlines

Physical Sciences, Mathematics & Engineering Division
C S 49FOUNDATIONS OF COMPUTER PROGRAMMINGSummer 2014
2 hours lecture, 2 hours laboratory.2.5 Units

Total Quarter Learning Hours: 48 (Total of All Lecture, Lecture/Lab, and Lab hours X 12)
 
 Lecture Hours: 2 Lab Hours: 2 Lecture/Lab:
 Note: If Lab hours are specified, see item 10. Lab Content below.

Repeatability -
Statement: Not Repeatable.

Status -
 Course Status: ActiveGrading: Letter Grade with P/NP option
 Degree Status: ApplicableCredit Status: Credit
 Degree or Certificate Requirement: Stand Alone Course
 GE Status: Non-GE

Articulation Office Information -
 Transferability: BothValidation: 07/01/2012; 12/12/13

1. Description -
Introduction to basic computer programming concepts using an object-oriented language. Intended for students interested in C S 1A or C S 2A, but would like a more gradual entry to computing foundations. 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.
Prerequisite: None
Co-requisite: None
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:
  1. Demonstrate how to use an Integrated Development Environment (IDE) to write a program.
  2. Write well documented code in a clear, industry-accepted style.
  3. Choose an appropriate data type in which to store a program's data.
  4. Convert an English description of a numeric calculation into an expression the computer can evaluate correctly.
  5. Incorporate user input into a program to interact with the user.
  6. Use appropriate control structures to execute instructions in different sequences.
  7. Write a reusable function that solves a common problem.
  8. Write code that uses an existing Application Programming Interface (API) to solve a specific problem.
  9. Interpret the specifications for, and design and implement solutions to, problems from different application areas.
3. Special Facilities and/or Equipment -
  1. Access to a computer laboratory with the appropriate compilers.
  2. 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.
  3. 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.
  4. 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) -
  1. Tools
    1. Writing vs. running a program
    2. Use of command, control, and option keys
    3. Navigation through the operating system file structure through well-organized storage and retrieval of files
    4. Storage and retrieval of files to/from a server
    5. Use compiler, editor and IDE
    6. Interpretation of APIs
  2. Methodology and Style
    1. Test-driven and iterative development methods
    2. Compiler errors vs. logic errors
    3. Separation of data and computation
    4. Documentation
    5. Acceptable indentation options
    6. Standards and conventions
  3. Data Types
    1. Primitive data
    2. Numeric data
    3. Character and string data
    4. Boolean data
    5. Creating named constants
    6. Built-in (language-defined) classes as compound types
  4. Expressions
    1. Evaluating and creating complex arithmetic expressions
    2. Concatenation and string expressions
    3. Logical expressions and Boolean algebra
  5. Input/Output
    1. Unformatted output
    2. Simple formatted output
    3. User input
      1. String data
      2. Receiving numeric data directly
      3. Receiving string data and converting to a numeric type
  6. Basic Control Structures
    1. if
    2. while
    3. statement block
  7. Programmer-defined Functions
    1. parameters
    2. local variables
    3. returned value
  8. Predefined Application Programming Interface
    1. parameters
    2. local variables
    3. returned value
  9. Applications used throughout course in selected areas
    1. Math
    2. Physics
    3. Chemistry
    4. Biology
    5. Astronomy
    6. Business and finance
    7. Internet
5. Repeatability - Moved to header area.
 
6. Methods of Evaluation -
  1. Tests and quizzes
  2. Written laboratory assignments which include source code, sample runs and documentation.
  3. 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 -
  1. Lectures which include motivation for syntax and use of the object-oriented language, APIs, functional programming, example programs, and analysis of these programs.
  2. On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. 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.
    2. 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.
  3. Detailed review of programming assignments which includes model solutions and specific comments on the student submissions.
  4. 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.
  5. When course is taught fully on-line:
    1. 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.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.
 
10. Lab Content -
  1. Using an IDE to write source code for a project and run it.
    1. Distinguish source code from a recording of the run of a program.
    2. Include both the source code and a recording of the run in an electronic file(s) for submission.
    3. 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.
  2. Using iterative development to progressively refine a project's features to fit a specification.
    1. Write and test a program that implements just one of a project's required features.
    2. Add the implementation of a second required feature to the project and test thoroughly.
    3. Complete the project by implementing and testing the remaining features one by one.
    4. Perform regression testing after the implementation of each new feature.
  3. Using Test Driven Development to speed up debugging
    1. Write test code first that does not run.
    2. Implement the code required to make the test code run successfully.
  4. Developing programs that are well designed and easy to modify
    1. Outline a project first in English in an abstract way, and make this outline the project's documentation.
    2. Separate data and computation in a program
    3. Use named constants to keep numbers out of a program
    4. Choose an appropriate data type for a program's storage
    5. Use a consistent and standard indentation style in the source code
  5. Writing expressions to be evaluated by the computer
    1. Correctly translate an English description of a numeric calculation into an expression that the computer can evaluate.
    2. Get data from the user in whole numbers and convert so that the calculation takes place with floating point operations and results.
    3. Write a complex boolean expression.
    4. Use String manipulations to achieve a specified result.
  6. Writing a program that interacts with the user
    1. Accept character data at runtime from the user to fill a program's variables with values.
    2. Accept numerica data from the user at runtime to use in calculations
  7. Controlling the order in which program statements are executed
    1. Use branches
    2. Use loops
    3. Use function or method calls and returns
    4. Enclose groups of statements into blocks to achieve a desired execution sequence.
  8. Using functions or methods to write code without repetition
    1. Write a function or method with no parameters and no returned value
    2. Write a function or method with both parameters and a returned value
    3. Use the scope of variables to keep data as locally as possible
    4. 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 -
  1. Reading
    1. Textbook assigned reading averaging 20 pages per week.
    2. Reading the supplied handouts and modules averaging 10 pages per week.
    3. Reading on-line resources as directed by instructor though links pertinent to programming.
    4. Reading library and reference material directed by instructor through course handouts.
  2. Writing
    1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.
13. Need/Justification -
This course is a restricted support course for the A.S. degree in Computer Science.


Course status: Active
Last updated: 2014-03-18 07:35:43


Foothill CollegeApproved Course Outlines