Active Outline

General Information


Course ID (CB01A and CB01B)
CISD026A
Course Title (CB02)
C as a Second Programming Language
Course Credit Status
Credit - Degree Applicable
Effective Term
Fall 2021
Course Description
This course is an introduction to the C programming language and its applications with topics covering basic input/output, structured program design and implementation, basic control structures and keywords, character and string manipulation, arithmetic expressions, functions and program modularization, arrays, pointers, structures, and linked lists.
Faculty Requirements
Course Family
Not Applicable

Course Justification


This course is UC and CSU transferable and is intended for those who are intermediate-level programmers in another programming language to learn the skills of writing code in C computer language. This course belongs on the Java Certificate of Achievement.

Foothill Equivalency


Does the course have a Foothill equivalent?
No
Foothill Course ID

Course Philosophy


Formerly Statement


Course Development Options


Basic Skill Status (CB08)
Course is not a basic skills course.
Grade Options
  • Letter Grade
  • Pass/No Pass
Repeat Limit
0

Transferability & Gen. Ed. Options


Transferability
Transferable to both UC and CSU
°®¶¹´«Ã½ GEArea(s)StatusDetails
2G4MDA and 4-yr GE Math AgApproved

Units and Hours


Summary

Minimum Credit Units
4.5
Maximum Credit Units
4.5

Weekly Student Hours

TypeIn ClassOut of Class
Lecture Hours4.08.0
Laboratory Hours1.50.0

Course Student Hours

Course Duration (Weeks)
12.0
Hours per unit divisor
36.0
Course In-Class (Contact) Hours
Lecture
48.0
Laboratory
18.0
Total
66.0
Course Out-of-Class Hours
Lecture
96.0
Laboratory
0.0
NA
0.0
Total
96.0

Prerequisite(s)


An Introductory Programming Language course such as CIS D022A or CIS D036A or equivalent

Corequisite(s)


Advisory(ies)


Limitation(s) on Enrollment


(This course is intended for students who are competent in another programming language.)

Entrance Skill(s)


General Course Statement(s)


Methods of Instruction


Lecture and visual aids.

Guest speakers

Discussion of assigned reading

Discussion and problem solving performed in class

Quiz and examination review performed in class

Homework and examination review performed in class

Collaborative learning in small group exercises

Collaborative projects

Laboratory discussion sessions

Laboratory experience which involve students in design, code, test and debug efficient C programs

Assignments


  1. Reading: Required reading from textbook and supplemental sources.
  2. Programs: 6-8 programming homework assignments (at least two should be about 500 lines of code, including standard documentation) covering the Lab Topics specified in X. below.

Methods of Evaluation


  1. Evaluation of assigned C programs for completeness, correctness, and employing the key concepts presented in class lectures and class problem solving.
  2. One to three exams that appraise comprehension and require synthesis and application of course material.
  3. A comprehensive final exam that appraises comprehension and requires synthesis and application of course material such as creating algorithms and writing code involving arrays and/or structures and/or linked lists. Code is evaluated on correctness, effectiveness and readability.
  4. In-class lab problems, group collaborative problems, exam questions and/or online assignments or tutorials demonstrating the ability to read and analyze code through debugging and/or writing snippets of code.

Essential Student Materials/Essential College Facilities


Essential Student Materials: 
  • None.
Essential College Facilities:
  • Access to a computer with a C compiler

Examples of Primary Texts and References


AuthorTitlePublisherDate/EditionISBN
Steve Oualline, "Practical C Programming", Third Edition, O'Reilly Media, 2011.
Perry, Greg; Miller, Dean. "C Programming Absolute Beginner's Guide" Third Edition. Pearson Education, 2013. ISBN-10: 0789751984.ISBN-13: 978-0789751980.

Examples of Supporting Texts and References


AuthorTitlePublisher
Harbison, Samuel "C: A Reference Manual", 5th Edition, Pearson Education, 2007. ISBN 8131714403, 9788131714409

Learning Outcomes and Objectives


Course Objectives

  • Create programs which demonstrate knowledge of basic input/output concepts, variable usage, arithmetic operators.
  • Implement control structures in well-organized, highly readable programs.
  • Create programs using appropriate modularity and coherent functions.
  • Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
  • Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
  • Demonstrate proficiency in handling file input and output.
  • Demonstrate proficiency in handling terminal input and output including special character functions.
  • Create programs which demonstrate knowledge of handling data as structure.
  • Create programs with more sophisticated character functions, math functions, and memory formatting.

CSLOs

  • Read, analyze and explain introductory and intermediate level C programs.

  • Design solutions, create algorithms, code, document, debug, and test introductory and intermediate level problems using appropriate design methodology incorporating elementary and intermediate programming constructs.

Outline


  1. Create programs which demonstrate knowledge of basic input/output concepts, variable usage, arithmetic operators.
    1. The main function
    2. "Include" files
    3. The printf function and basic output
    4. The scanf function and basic input
    5. Declaring scalar variable types
    6. Basic arithmetic expressions and operator precedence
    7. Mixed type
    8. #define constants
    9. Program documentation and readability enhancements
  2. Implement control structures in well-organized, highly readable programs.
    1. Loops: The for, while, and do. . .while statements
    2. Conditional execution
      1. If. . .then. . .else
      2. Switch
      3. The ternary operator (the ? operator)
      4. Structure and evaluation of boolean expressions
    3. The idea of a program block
  3. Create programs using appropriate modularity and coherent functions.
    1. Declaring functions via prototyping
    2. Calling functions
    3. Function parameters
    4. Local variables: static, automatic, and register storage types
    5. Call-by-value and call-by reference
    6. The return statement: type conversion rules
    7. Relationship of actual and formal parameters
    8. Program modularity and coherent functions
  4. Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
    1. Non-character arrays
      1. Declaration and initialization
      2. Array indexing versus pointer arithmetic
      3. Array traversal with pointers
      4. Array assignment and copying
    2. Arrays of character I.e. "strings"
      1. Declaration and initialization
      2. String input/output using scanf/printf and gets/puts
      3. String traversal with pointers
      4. Passing strings to functions
      5. The string.h functions: strcat, strncat, strcpy, strncpy, strcmp, strncmp, strchr, strrchr, and strlen
    3. Intro to Multidimensional arrays and arrays of pointers
      1. Declaration and initialization
      2. Traversal
      3. Dynamic array allocation
  5. Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
    1. * and & operators
    2. Static versus dynamic array allocation: introduction to the malloc, calloc, realloc, and free functions
    3. The difference between an array and a pointer variable
    4. Passing arrays to and using arrays within functions
    5. Call by reference
    6. Arrays of pointers
  6. Demonstrate proficiency in handling file input and output.
    1. Opening files: The fopen function and the "r" and "w" open modes
    2. The fgets, fputs, fprintf, fscanf, fgetc, and fputc functions
    3. Line-oriented files: Using fgets in loop headers
    4. Character-oriented files: The value of EOF and the feof function
    5. Closing files: The fclose function
  7. Demonstrate proficiency in handling terminal input and output including special character functions.
    1. The correct way to read line-oriented terminal input: the fgets and sscanf functions
    2. Pitfalls of scanf for terminal i/o
    3. The getchar, ungetc, and putchar functions
    4. User-generated end-of-file: How to detect
    5. Line-buffered versus character-buffered terminal i/o: implications for programmers
  8. Create programs which demonstrate knowledge of handling data as structure.
    1. The . and -> notations to access structure components
    2. Arrays of structures: declaring, assigning, and traversing
    3. Passing structures and arrays of structures to functions
    4. Nested structures: notational problems and solutions
    5. Self-referential structures and introduction to dynamic data types: singly-linked lists
    6. The typedef statement
  9. Create programs with more sophisticated character functions, math functions, and memory formatting.
    1. The math library
    2. The ctype.h library: the isalpha, isalnum, isdigit, toupper, and tolower functions
    3. The sprintf and sscanf functions

Lab Topics


  1. Design algorithms, code solution, debug and test programs employing variables, expressions, and input/output.
  2. Design algorithms, code solution, debug and test programs employing control and flow structures.
  3. Design algorithms, code solution, debug and test program employing functions(pre-defined and user-defined)
  4. Design algorithms, code solution, debug and test program employing one dimensional arrays.
  5. Design algorithms, code solution, debug and test program employing two dimensional arrays.
  6. Design algorithms, code solution, debug and test program employing memory allocation.
  7. Design algorithms, code solution, debug and test program employing pointer arithmetic.
  8. Design algorithms, code solution, debug and test program employing string manipulation.
  9. Design algorithms, code solution, debug and test program employing structures.
  10. Design algorithms, code solution, debug and test program employing singly-linked lists.
Back to Top