C and Data Structures develops the student's ability to understand and create computing systems.  In the first half of the course, students move beyond the abstractions of modern programming languages and learn how the computer understands and executes programs. To accomplish this understanding, students study the basics of assembly language, Unix shells, and the C Programming language with an emphasis on pointers.  In the second half of the course, students explore advanced topics in Java, with an emphasis on developing solid, tested code and on learning many standard data structures and how to use them effectively in programs.