CS/CE 218 Objectives vs. skills -*-Outline-*- * Unix and C programming (100%) [effective use of Unix and C] ** design (45%) [design good programs in the Unix style] *** Unix programming principles (15%) [explain principles of the Unix environment relevant to Unix programming] the file system structure, file permissions, pipelines, standard input, output, error streams, environments, etc. *** Shell (15%) [design programs that will be implemented with the Bourne shell] **** abstraction (5%) [use abstractions to break up a design into several smaller commands] filters, etc. **** programming in the large (8%) [putting together large programs from smaller pieces] pipelines, etc. **** abstract data types (2%) [use abstract data types in design] command groups *** C (15%) **** abstraction (5%) [use abstractions to break up a design into several smaller pieces] modules and information hiding **** programming in the large (5%) [putting together large programs from smaller pieces] standard C libraries (standard, stdio, ctype) **** abstract data types (5%) [use abstract data types in design] finding the data types in a program ** build or writing code (50%) [effectively use Unix to write medium-sized programs] *** editing (1%) [edit Unix text files] proficiency with an editor (emacs), *** principles of Bourne shell programming (15%) [write good code in the Bourne shell] return codes, command substitution, file name generation, quotation, environment, interrupts, etc. *** C programming (34%) [write good code in C] **** principles (10%) [explain principles of C programming] structures, static vs. automatic declarations, arrays, macros, include files, etc. **** coding facility (10%) [write C code in good style] **** abstraction and programming in the large (9%) ***** enforcement of modularity (4%) [use modules in C to enforce information hiding] ***** tools for programming in the large (5%) [use Unix tools to aid working with large programs] linkage, libraries, lint libraries make **** abstract data types (5%) [enforce data abstraction with C coding conventions] enforcement of data abstraction ** Testing and Debugging (5%) [be able to test and debug shell and C programs using software tools] automating testing procedures automatic recording and comparison of test outputs *** Shell tracing shell scripts *** C C compiler conventions debuggers