What is PAC?
PAC stands for the "Preparatory Accelerated Course" in Computer Science.
The PAC program was designed by the CS department to accommodate the needs of individuals seeking to undertake graduate work in computer science but lacking the necessary prerequisite undergraduate degree and training.
The program provides an intensive yearlong 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.
What topics are covered in PAC?
The fall semester addresses "high-level" problem solving on the computer, using the programming language 'Ada' 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, while the second half emphasizes the application of these skills in the development of abstract data types, reusable packages, 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 study the 'C' language. '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 and machine languages. We then combine the skills of PAC I with the syntax of C, and the concept of object-oriented programming to conclude with an exploration of the Java programmign language.
The course assignments are designed to develop 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, Algorithms, Compilers, and Operating Systems.
How do I get into PAC?
There are two main paths into the PAC program. One is by direct application (available on the department web site). This path is self-selected by applicants who would like to begin graduate study in the field of Computer Science but lack the academic background and/or relevant experience.
The second path is as part of a conditional acceptance into the Master's program in either Computer Science or Information Systems. In this instance, the admissions committee makes a determination that an application is acceptable, but the technical experience of the prospective student is inadequate to meet the demands of the required core courses in computer science.
Are GRE test scores required?
Yes. The General GRE test score is required, but the Computer Science subject exam is not.
What does it mean to "successfully complete the PAC program"?
A student successfully completes the PAC program by attaining a grade of 'B' or better in the second semester of PAC. Note that a grade of 'B' or better is also required to advance from the first semester to the second.
This represents a slight change from previous policy, where the admissions requirements were more relaxed but the completion requirements more stringent (requiring a grade of 'A' in the second semester!). It is now the case that the admissions requirements are tougher, and the criteria for "successful completion" more consistent with the overall master's program requirements.
Successful completion of PAC (along with the other prerequisites such as GRE scores and satisfying the Discrete Math requirement) results in full and unconditional matriculation of the student into the CS program.
Students are advised that admission to the IS program involves a separate application process; successful completion of PAC by itself does not guarantee admission into the joint Courant/Stern program in Information Systems.
I already know the language ( _xyz_ ) so why do I need to take PAC?
Many students have had a semester or two of programming in languages ranging from Basic to Java. And many others have practical skills from programming on the job. However, such experiences are often quite specific, and do not encompass the range of topics required. Indeed, a year of programming is considered a minimal prerequisite for acceptance into the PAC program.
Is it necessary to take both semesters of PAC?
Generally, yes. The concepts presented in the first semester are often explored at greater depth in the second, such that there is a presumption of prior exposure and familiarity. It is exceedingly rare for someone to skip the first semester of PAC and then successfully complete the second. And if the topics of the second semester were already well-known by the student, then it is quite likely that the student would have been exempted from PAC altogether.
Do PAC credits apply towards my degree?
No. PAC is designed to prepare students for the program as a whole, not replace part of the program.
Why do we study the 'ADA' language in the first semester?
This question often arises, as students will say "well, at my other school, they used (Pascal, Modula, Scheme, Java, C++)".
Without getting involved in a quasi-religious debate, here is the context: Ada underwent the most rigorous specification and development process in the history of programming languages. It is considered the most mature and stable of all the languages in the "imperative" family of languages. It provides a thorough grounding in the fundamental concepts of imperative programming, and supports advanced ideas such as "packages" for abstract data types, parallel computation, and real-time programming.
Also, our department retains a considerable amount of expertise in the Ada language, as the first validated Ada 95 compiler was designed and implemented here at NYU by members of our faculty (Profs. Dewar and Schonberg).
More important for our purposes, Ada serves as a benchmark reference point in the discussion of the features and functionality of other programming languages.
It should be noted that languages such as C++ , Scheme, and Java are addressed in the CS core course "Programming Languages".
Can I take other courses at the same time as PAC?
The short answer is 'yes', but the options available are limited. Most departmental courses require one or another of the "core" courses (such as Programming Languages, Compilers, Operating Systems, or Fundamental Algorithms) as prerequisites.
What courses should I take after PAC?
Students take PAC I in the fall term, followed by PAC II in the spring term.
The department offers a special section of Discrete Math in the summer. It is a 3-credit graduate-level course that applies to your degree program, and satisfies the math requirement for admissions. It is also a very useful introduction to the material required for the core course Fundamental Algorithms.
Most students will then take either Fundamental Algorithms or Programming Languages, as these two are the basic prerequisites for more advanced courses.
The department advises students to concentrate on the four core courses first, and then take the "core" exam (based, naturally, on the four core courses) before they have completed 18 of the 36 credits required for the degree.
Students are directed to the departmental web site for course descriptions and requirements, and are advised to consult with the department on more detailed individual inquiries regarding curricular and scheduling matters.(top)