COP 5227: C Programming Essentials

The purpose of this course is to get familiar with Linux, design a program of moderate complexity as multiple small, easily understood modules in C. This course will also teach how to correctly use and reason about pointers and pointer arithmetic and use dynamic memory allocation for arrays and structures.

By the end of this course, students will be able to:

  • Edit, compile, link, and execute C programs on the Linux platform.
  • Use modules to organize a C program.
  • Map their pre-requisite knowledge about data types, Input / Output operations, and execution control flow to the C programming language.
  • Correctly trace through C programs using pointers and pointer arithmetic.
  • Correctly use pointer dereferencing and arithmetic with arrays, strings.
  • Use structs and unions to model more advanced data structures.
  • Correctly use pointers to allocate / deallocate arrays, strings, structs and unions.
  • Apply their knowledge to implement a rudimentary data structure such as a linked list.

List of topics covered:

Elementary data types, I/O operations, Control flow, Functions, Block Scope, Arrays, Strings, Preprocessor Directives, Pointers, Dynamic Memory Allocation, Data Structures, Dynamical Data Structures etc.

Study resources: Playlist

Faculty Profile:

Dr. Alessio





Associate Professor
Computer Science and Engineering
ENB 343E |

Dr. Alessio Gaspar is an Associate Professor with the University of South Florida’s Department of Computer Science & Engineering, lead of the USF Computing Education Research & Evolutionary Algorithms Lab(CEREAL). He received his Ph.D. in computer science in 2000 from the University of Nice Sophia-Antipolis (France). Before joining USF, he worked as visiting professor at the ESSI polytechnic and EIVL engineering schools (France) then as postdoctoral researcher at the University of Fribourg’s Computer Science department (Switzerland). Dr. Gaspar is an ACM SIGCSE, SIGITE and SIGEVO member and regularly serves as reviewer for international journals & conferences and as panelist for various NSF programs. His research interests include Evolutionary Algorithms and Computing Education Research, with applications to Computer Assisted Teaching and Learning. This work has been so far funded by the National Science Foundation under programs such as CCLI, IUSE, and ATE. His technology interests include System Administration with Linux, Programming (mostly Java, JavaScript, Python), Web App Development (e.g., Flask), and open source in general.

Link to Dr. Gaspar's research lab: