CSC 230 - C and Software Tools
Catalog Description:In this course, students will develop skills in several important areas. First, we'll get some experience working in C, a language that lets us think like procedural rather than object-oriented developers. Also, being a fairly low-level language, C lets us see and control more of what's going on in the hardware. This can help us think about using the hardware more effectively, whether we're actually programming in C or in a higher-level language. While we learn C, we'll also learn about tools and techniques that help us build, manage, debug and analyze software projects.
Contact Hours:
- Lecture: 3 hours
Co-requisites: None
Restrictions: None
Coordinator: Dr. David Sturgill
Textbook:
Course Outcomes:
Upon successful completion of this course, a student will be able to...
- Compilation: implement C programs using the C standard library, with separately-compiled modules; explain the steps of compilation; identify and fix errors that happen during compilation and execution.
- Language: write, debug, and modify C programs using data types, control structures, operators, library utilities, and variables, including scope in a single function, across multiple functions, and across multiple modules.
- Assembly language: describe and explain a small subset of assembly language sufficient to illustrate implementation of C features like the switch and goto statements, accessing parts of the stack frame and accessing fields in a struct.
- Numbers: add and subtract unsigned and signed, two's complement binary integers and convert among standard types including bases 2, 10, and 16; describe 16-bit and 32-bit IEEE floating representation and its consequences for rounding error, and convert between these formats and decimal.
- Memory and Representation: use functions and basic data structures involving arrays, structs, pointers, and function pointers; allocate and deallocate memory in C programs while avoiding memory leaks and dangling pointers.
- Tools: utilize software development tools to implement, test, build, and trace C programs including, build automation, version control, static analysis, and dynamic analysis tools.
- Security: describe and demonstrate how to avoid common programming errors that lead to security vulnerabilities, such as buffer overflows and injection attacks; describe security properties provided by cryptographic “primitives” (e.g., symmetric cryptography, asymmetric cryptography, and cryptographic hash functions).
Topics:
- Getting Started in C
- I/O and Compilation
- Revision Control and GDB
- Variables, Expressions and Types
- Signed and Floating Point
- Expressions, Statements, and Functions
- Program Structure
- Arrays
- Pointers
- File I/O and Strings
- Dynamic Memory Allocation
- Structs
- DataStructures
- Debugging
- Bitwise Operators
- The Preprocessor
- The C Standard Library
- Standard Library and Program Organization
- Data Structures and Object Orientation
- Assembly Language and Implementation
- The Rest of C
- Performance
- Security
See Course Listings