Students study a common core of fundamental topics, supplemented by a track that identifies specific areas for deeper study. The foundations track prepares students for advanced work in fundamental theoretical and mathematical aspects of computing, including analysis of algorithms, scientific computing, and security. The systems track prepares students for immediate employment in the computer industry as well as advanced study in such areas as software engineering, operating systems, computer-aided digital design, computer architecture, programming languages, and user interfaces. The artificial intelligence track provides specialization for the student interested in natural language processing and systems capable of exhibiting “human-like” intelligence. The applications track is for students interested in the implementation of interactive multimedia content for the Internet and wireless applications. The vision and graphics track exposes students to computer vision, graphics, human-computer interaction and robotics. A combination track is available to students who wish to pursue an interdisciplinary course of study combining computer science and another field in the arts, humanities, mathematics, natural sciences, or social sciences. http://gs.columbia.edu
First year Information Technology students face a wide variety of challenges. Not only must they contend with the pressures of commencing tertiary education, with all the issues associated with adjusting from secondary to university study, they also are confronted with immersing themselves into a discipline in which they may not have had any prior formal education and for which they must essentially learn a new language, a programming language. For many Information Technology courses, a rudimentary background in mathematics and English is all that is required to enter the degree and commence study. However a first semester of study may encompass such units as Computer Systems, Data Communications and Computer Programming. Students may find themselves in unfamiliar territory and these computing fundamentals can prove to be a learning challenge, particularly introductory programming courses
Introductory computer programming has been the subject of many research papers, focusing on a wide range of technical and educational aspects. Giangrande (2007) highlights that the issues include “which programming language should be used, which methodology should be taught, which topics should be included” (pg. 153). Debates over Structured versus Object-Oriented driven curriculum still continue to divide computing educators. As Lister et. al. (2006) discuss, “The SIGCSE community is currently sustaining a very vigorous debate on the teaching of programming, with particular regard to the question of objects first” (pg. 147). Research by Schulte and Bennedsen (2006) showed that 79% of surveyed universities covered Object Oriented concepts, with 52%, slightly over half, covering objects first (pg. 20). The debate also rages as to the appropriate choice of programming language, with many favouring widely used languages such as C++ and Java while others advocate ‘conceptual’ languages or alternate approaches such as the use of games or toolkits in order to focus on logical thinking and implementation. Schulte and Bennedsen (2006) showed that Java is clearly the most used programming language, in the order of 52% across the universities surveyed (pg. 20). Even though this may be the case, many researchers argue against the use of Java. Hadjerrouit (1998) provides a critical evaluation, highlighting the inherent difficulties in using Java as a first programming language, Crawford and Boese (2005) suggest the use of the multimedia language ActionScript as a solution, while others (Powers et. al. 2006; Gross and Powers 2005) choose independent toolsets as a means of introducing students to programming concepts.
Regardless of what choices are made for programming...