What is PAC?

PAC stands for the "Preparatory Accelerated Course" in Computer Science.

The PAC program was designed by the CS department to accomodate the needs of individuals seeking to undertake graduate work in computer science but lacking the necessary pre-requisite undergraduate degree and training.

The program is an intensive year-long exposure to the fundamental concepts and skills of computer science. Students meet twice per week throughout the fall and spring terms, and typically spend between twelve and sixteen hours per week outside of class working on assignments.

The fall semester addresses "high-level" problem solving on the computer, using the programming languages 'Ada' and to a lesser extent 'Java' as a means to implement solution strategies. Topics in the first semester include data typing, program organization (subprograms and packages), and data structures (arrays, records, pointers, linked lists, binary trees). Generally the first half of the semester focusses on learning the fundamentals of the languages, while the second half emphasizes the application of these skills in the development of abstract data types and modular software development techniques.

The spring semester addresses "low-level" problem solving on the computer. Here we "peel back" the abstractions and investigate the underlying machine. We learn the assembly language for the Intel x86 chips, and along the way investigate how information is actually stored and manipulated internally.

We also learn the language 'C'. 'C' is often described as "a high-level low-level language" (or vice-versa), as it is a high-level language that provides access to many of the features we usually associate with assembly language. We then include a section on the Unix operating system, from the fundamentals up to shell script programming.

The assignments are designed to provide the student familiarity with benchmark concepts of computer science, and are often selected to provide anticipatory insight into topics encountered later in the core CS graduate classes such as Programming Languages, and Compilers.