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
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
°®¶¹´«Ã½ GE | Area(s) | Status | Details |
---|---|---|---|
2G4M | DA and 4-yr GE Math Ag | Approved |
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.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
- Reading: Required reading from textbook and supplemental sources.
- 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
- Evaluation of assigned C programs for completeness, correctness, and employing the key concepts presented in class lectures and class problem solving.
- One to three exams that appraise comprehension and require synthesis and application of course material.
- 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.
- 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.
- Access to a computer with a C compiler
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
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
Author | Title | Publisher |
---|---|---|
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
- Create programs which demonstrate knowledge of basic input/output concepts, variable usage, arithmetic operators.
- The main function
- "Include" files
- The printf function and basic output
- The scanf function and basic input
- Declaring scalar variable types
- Basic arithmetic expressions and operator precedence
- Mixed type
- #define constants
- Program documentation and readability enhancements
- Implement control structures in well-organized, highly readable programs.
- Loops: The for, while, and do. . .while statements
- Conditional execution
- If. . .then. . .else
- Switch
- The ternary operator (the ? operator)
- Structure and evaluation of boolean expressions
- The idea of a program block
- Create programs using appropriate modularity and coherent functions.
- Declaring functions via prototyping
- Calling functions
- Function parameters
- Local variables: static, automatic, and register storage types
- Call-by-value and call-by reference
- The return statement: type conversion rules
- Relationship of actual and formal parameters
- Program modularity and coherent functions
- Create programs which demonstrate knowledge of manipulating data in arrays of one or more dimensions.
- Non-character arrays
- Declaration and initialization
- Array indexing versus pointer arithmetic
- Array traversal with pointers
- Array assignment and copying
- Arrays of character I.e. "strings"
- Declaration and initialization
- String input/output using scanf/printf and gets/puts
- String traversal with pointers
- Passing strings to functions
- The string.h functions: strcat, strncat, strcpy, strncpy, strcmp, strncmp, strchr, strrchr, and strlen
- Intro to Multidimensional arrays and arrays of pointers
- Declaration and initialization
- Traversal
- Dynamic array allocation
- Non-character arrays
- Create programs which demonstrate knowledge of memory management functions and pointer arithmetic to manipulate data in one-dimensional arrays.
- * and & operators
- Static versus dynamic array allocation: introduction to the malloc, calloc, realloc, and free functions
- The difference between an array and a pointer variable
- Passing arrays to and using arrays within functions
- Call by reference
- Arrays of pointers
- Demonstrate proficiency in handling file input and output.
- Opening files: The fopen function and the "r" and "w" open modes
- The fgets, fputs, fprintf, fscanf, fgetc, and fputc functions
- Line-oriented files: Using fgets in loop headers
- Character-oriented files: The value of EOF and the feof function
- Closing files: The fclose function
- Demonstrate proficiency in handling terminal input and output including special character functions.
- The correct way to read line-oriented terminal input: the fgets and sscanf functions
- Pitfalls of scanf for terminal i/o
- The getchar, ungetc, and putchar functions
- User-generated end-of-file: How to detect
- Line-buffered versus character-buffered terminal i/o: implications for programmers
- Create programs which demonstrate knowledge of handling data as structure.
- The . and -> notations to access structure components
- Arrays of structures: declaring, assigning, and traversing
- Passing structures and arrays of structures to functions
- Nested structures: notational problems and solutions
- Self-referential structures and introduction to dynamic data types: singly-linked lists
- The typedef statement
- Create programs with more sophisticated character functions, math functions, and memory formatting.
- The math library
- The ctype.h library: the isalpha, isalnum, isdigit, toupper, and tolower functions
- The sprintf and sscanf functions
Lab Topics
- Design algorithms, code solution, debug and test programs employing variables, expressions, and input/output.
- Design algorithms, code solution, debug and test programs employing control and flow structures.
- Design algorithms, code solution, debug and test program employing functions(pre-defined and user-defined)
- Design algorithms, code solution, debug and test program employing one dimensional arrays.
- Design algorithms, code solution, debug and test program employing two dimensional arrays.
- Design algorithms, code solution, debug and test program employing memory allocation.
- Design algorithms, code solution, debug and test program employing pointer arithmetic.
- Design algorithms, code solution, debug and test program employing string manipulation.
- Design algorithms, code solution, debug and test program employing structures.
- Design algorithms, code solution, debug and test program employing singly-linked lists.