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.
Why do we study the C++ language?
This question often arises, as students will say "well, at my other school, they used (Pascal, Modula, Scheme, Java, Ada)".
Without getting involved in a quasi-religious debate, here is the context: C++ has undergone decades of the most rigorous specification and development process. It is considered a very mature and stable languages (in the "imperative" family of languages). It provides a thorough grounding in the fundamental concepts of imperative programming and supports a good understanding of the underlying machine, and does not appear to be an "applications programming language (as Java appears to many, there's not too much "it's done by magic" or "do it this way" when first learning C++ - instead the learner gains understanding the "whys"). It also has the largest installed based of code of all programming languages. [An inline footnote: a teaching colleague of mine who will remain nameless often goes to trade shows and developers conference and seeks out the tables where hiring of programmers takes place. In his conversations with those who need technical, detailed, knowledgeable programmers he documents that on many occasions after introducing himself as a Univeristiy level teacher of computer science, he asks about what the hirers would like in the candidates sent to them: "Please don't send us any more Java programmers, they don't know how to write detailed code and they don't understand the low level, behind-the-scenes processing of the computer." (Of course I'm paraphrasing but there is a sense that C++ programmers understand the mapping of code to machine and efficiency issues of code better than Java people).]
Why not C# (C sharp)?
This is Microsoft's failed attempt to "take over" the C++ language. It is extremely joined to ONLY the Microsoft Windows operating system and environment. It is NOT a standard language, it is a Microsoft-specific extension (subversion - my opinion) of C++. Once you know C++, the changeover to company that uses C# will be no problem and you'll know a lot more (most likely) than those who were raised on C# about programming (they'll know about some Window-y things you'll quickly pick up). [EOT].
Does C++ have shortcomings? Yes, all languages do. The BOOST group and others are working towards an updated standard that will adress some these issues and make those that already in the language even better.
In the past, this course was taught in Ada. 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, both now retired).
It should be noted that C++ is not taught in the CS undergraduate core courses. Thus this course can be used by undergraduates to learn C++ in depth.