Computer Science (2022 - 2024)
Introduction to Computer Programming (No Prior Experience)
CSCI-UA 2 Prerequisite: three years of high school mathematics or equivalent. No prior computing experience is assumed. Students with any programming experience should consult with the department before registering. Students with any reported score on the AP Computer Science examination cannot enroll in this course. Students who have taken or are taking Introduction to Computer Science (CSCI-UA 101) will not receive credit for this course. Does not count toward the computer science major; serves as the prerequisite for students with no previous programming experience who want to continue into CSCI-UA 101 and pursue the major. Students may not receive credit for both CSCI-UA 2 and CSCI-UA 3. Offered in the fall and spring. 4 points.
A gentle introduction to the fundamentals of computer programming, which is the foundation of computer science. Students design, write, and debug computer programs. No knowledge of programming is assumed.
Introduction to Computer Programming (Limited Prior Experience)
CSCI-UA 3 Prerequisite: limited programming experience, or Data Science for Everyone (DS-UA 111), or any score on the AP Computer Science examination (students with a score of 4 or 5 will forfeit the AP credit). Students who have taken or are taking Introduction to Computer Science (CSCI-UA 101) will not receive credit for this course. Does not count toward the computer science major; serves as the prerequisite for students with no previous programming experience who want to continue into CSCI-UA 101 and pursue the major. Students may not receive credit for both CSCI-UA 2 and CSCI-UA 3; students who have earned a C or higher in CSCI-UA 2 cannot enroll in this course and Albert will block them from registering for it. Offered in the fall and spring. 4 points.
Introduces object-oriented programming, recursion, and other important concepts to students who already have had some exposure to programming in the context of building applications using Python. Students will design and implement Python programs in a variety of applied areas.
Introduction to Web Design and Computer Principles
CSCI-UA 4 Prerequisite: three years of high school mathematics or equivalent. No prior computing experience is assumed. Students with computing experience should consult with the department before registering. Offered every semester. 4 points.
Introduces students to both the practice of web design and the basic principles of computer science. The practice component covers not only web design but also current graphics and software tools. The principles section includes an overview of hardware and software, the history of computers, and a discussion of the impact of computers and the Internet.
Database Design and Implementation
CSCI-UA 60 Prerequisite: Introduction to Computer Programming (No Prior Experience) (CSCI-UA 2) or Introduction to Computer Programming (Limited Prior Experience) (CSCI-UA 3). Not open to students who have completed Data Management and Analysis (CSCI-UA 479) with a C or better; Albert blocks them from enrolling in this course. Offered in the fall and spring. 4 points.
Introduces principles and applications of database design and working with data. Students use Python as they prepare, analyze, and work with data and use SQL to study the principles and implementations of relational databases. Also covers other database paradigms, such as NoSQL. Students apply these principles to computer systems and their respective fields of interest.
Web Development and Programming
CSCI-UA 61 Prerequisites: Introduction to Computer Programming (No Prior Experience) (CSCI-UA 2) or Introduction to Computer Programming (Limited Prior Experience) (CSCI-UA 3), and Introduction to Web Design and Computer Principles (CSCI-UA 4). Not open to students who have completed Applied Internet Technology (CSCI-UA 467) with a C or better; Albert blocks them from enrolling in this course. Offered in the fall and spring. 4 points.
Provides a practical approach to web technologies and programming. Students build interactive, secure, and powerful web programs. Covers client and server side technologies for the web.
Topics of General Computing Interest
CSCI-UA 380 Topics determine prerequisites. 4 points.
Detailed descriptions available when topics are announced. Typical offerings include Computing in the Humanities and Arts and Introduction to Flash Programming. Does not count toward the computer science major.
Programming Tools for the Data Scientist
CSCI-UA 381 Prerequisites: Data Science for Everyone (DS-UA 111) or equivalent proficiency in Python, and either Introduction to Computer Programming (No Prior Experience) (CSCI-UA 2) or Introduction to Computer Programming (Limited Prior Experience) (CSCI-UA 3). Does not count toward the major in computer science. Lecture and laboratory. Offered in the fall and spring. 4 points.
Building applications in Python using a project-based learning approach. Students use Python packages in a variety of applied areas, such as textual analysis and data visualization.
Introduction to Computer Science
CSCI-UA 101 Prerequisite: Introduction to Computer Programming (No Prior Experience) (CSCI-UA 2) or Introduction to Computer Programming (Limited Prior Experience) (CSCI-UA 3), or departmental permission assessed by placement exam, or a score of 3 on the AP Computer Science examination (scores of 4 and 5 are acceptable prerequisites for students who wish to take CSCI-UA 101 before entering CSCI-UA 102, but they will forfeit the AP credit). Offered in the fall and spring. 4 points.
How to design algorithms to solve problems and how to translate these algorithms into working computer programs. Experience is acquired through projects in a high-level programming language. Intended primarily for computer science majors but also suitable for students of other scientific disciplines. Programming assignments.
CSCI-UA 102 Prerequisite: Introduction to Computer Science (CSCI-UA 101), or a score of 4 or 5 on the AP Computer Science examination. Offered in the fall and spring. 4 points.
Use and design of data structures, which organize information in computer memory. Stacks, queues, linked lists, binary trees: how to implement them in a high-level language, how to analyze their effect on algorithm efficiency, and how to modify them. Programming assignments.
Computer Systems Organization
CSCI-UA 201 Prerequisite: Data Structures (CSCI-UA 102). Offered in the fall and spring. 4 points.
Covers the internal structure of computers, machine (assembly) language programming, and the use of pointers in high-level languages. Topics include the logical design of computers, computer architecture, the internal representation of data, instruction sets, and addressing logic, as well as pointers, structures, and other features of high-level languages that relate to assembly language. Programming assignments are in both assembly language and other languages.
CSCI-UA 202 Prerequisite: Computer Systems Organization (CSCI-UA 201). Offered in the fall and spring. 4 points.
Covers the principles and design of operating systems. Topics include process scheduling and synchronization, deadlocks, memory management (including virtual memory), input/output, and file systems. Programming assignments.
CSCI-UA 310 Prerequisites: Data Structures (CSCI-UA 102); Discrete Mathematics (MATH-UA 120); and either Calculus I (MATH-UA 121) or Mathematics for Economics II (MATH-UA 132; formerly MATH-UA 212). Offered in the fall and spring. 4 points.
Introduction to the study of algorithms. Presents two main themes: designing appropriate data structures and analyzing the efficiency of the algorithms that use them. Algorithms studied include sorting, searching, graph algorithms, and maintaining dynamic data structures. Homework assignments, not necessarily involving programming.
CSCI-UA 421 Prerequisites: Computer Systems Organization (CSCI-UA 201), either Calculus I (MATH-UA 121) or both of Mathematics for Economics I and II (MATH-UA 131 and 132; formerly MATH-UA 211 and 212), and Linear Algebra (MATH-UA 140), or permission of instructor. Offered in the spring. 4 points.
The need for floating-point arithmetic, the IEEE floating-point standard, and the importance of numerical computing in a wide variety of scientific applications. Fundamental types of numerical algorithms: direct methods (e.g., for systems of linear equations), iterative methods (e.g., for a nonlinear equation), and discretization methods (e.g., for a differential equation). Numerical errors: can you trust your answers? Uses graphics and software packages such as Matlab. Programming assignments.
Theory of Computation
CSCI-UA 453 Prerequisite: Basic Algorithms (CSCI-UA 310). Offered in the fall. 4 points.
A mathematical approach to studying topics in computer science, such as regular languages and some of their representations (deterministic finite automata, nondeterministic finite automata, regular expressions) and proof of nonregularity. Context-free languages and pushdown automata; proofs that languages are not context-free. Elements of computability theory. Brief introduction to NP-completeness.
Applied Internet Technology
CSCI-UA 467 Prerequisite: C or better in Computer Systems Organization (CSCI-UA 201). Students who complete this course with a C or better are not eligible to take Web Development and Programming (CSCI-UA 61); Albert blocks them from enrolling in it. Offered every fall and spring. 4 points.
Covers every aspect of building a database-driven web application: server programming, database implementation, frontend markup, styling, and interactivity. Topics include database and data model design, web application architecture, separation of logic and presentation, handling user input and processing form data, managing asynchronous processes, strategies for creating real-time web applications, and handling client-side interactivity.
CSCI-UA 470 Prerequisite: Computer Systems Organization (CSCI-UA 201). Offered in the fall. 4 points.
Introduces the important concepts of object-oriented design and languages, including code reuse, data abstraction, inheritance, and dynamic overloading. Covers in depth those features of Java and C++ that support object-oriented programming and gives an overview of other object-oriented languages of interest. Significant programming assignments stressing object-oriented design.
CSCI-UA 472 Prerequisites: Computer Systems Organization (CSCI-UA 201) and Basic Algorithms (CSCI-UA 310). 4 points.
Many cognitive tasks that people can do easily and almost unconsciously have proven extremely difficult to program on a computer. Artificial intelligence tackles the problem of developing computer systems that can carry out these tasks. Focus is on three central areas in AI: representation and reasoning, machine learning, and natural language processing.
Fundamentals of Machine Learning
CSCI-UA 473 Formerly Introduction to Machine Learning. Prerequisites: Data Structures (CSCI-UA 102), Linear Algebra (MATH-UA 140), and Probability and Statistics (MATH-UA 235). Students may substitute any of the following courses for MATH-UA 235: Theory of Probability (MATH-UA 233), Mathematical Statistics (MATH-UA 234), Honors Theory of Probability (MATH-UA 238), or Data Analysis (MA-UY 2224; this applies primarily to Tandon students who have transferred into CAS). 4 points.
This exciting and fast-evolving field of computer science has many recent consumer applications (e.g., Microsoft Kinect, Google Translate, IPhone's Siri, digital camera face detection, Netflix recommendations, Google news) and applications within the sciences and medicine (e.g., predicting protein-protein interactions, species modeling, detecting tumors, personalized medicine). Students learn the theoretical foundations and how to apply machine learning to solve new problems.
CSCI-UA 474 Prerequisite: Computer Systems Organization (CSCI-UA 201). 4 points.
Topics include advanced object-oriented design, design patterns, refactoring, code optimization, universal modeling language, threading, user interface design, enterprise application development, and development tools. All topics are integrated and applied during the semester- long group project.
CSCI-UA 475 Prerequisites: Linear Algebra (MATH-UA 140), Computer Systems Organization (CSCI-UA 201), and Basic Algorithms (CSCI-UA 310). Offered every year. 4 points.
The art and science of extracting useful information from historical and present data to predict future trends. Introduces the phases of the analytics life cycle and a variety of tools and machine learning algorithms for analyzing data. Covers data preprocessing techniques, data reduction algorithms, data clustering algorithms, data classification algorithms, uplifting algorithms, association rules, data mining algorithms, recommender systems, and more.
Processing Big Data for Analytics Applications
CSCI-UA 476 Prerequisites: Computer Systems Organization (CSCI-UA 201) and Basic Algorithms (CSCI-UA 310). Familiarity with Linux commands and SQL is helpful but is not required. Offered every year. 4 points.
Introduces platforms, tools, and architectures that facilitate scalable management and processing of vast quantities of data. Explores open-source tools enabling the efficient acquisition, distributed storage, and processing of big data. Provides hands-on experience with distributed processing Apache solutions such as Hadoop MapReduce, HBase, Hive, Impala, Pig, core Spark, Spark SQL, and Spark Streaming. Other Apache big data tools covered are Oozie, Zookeeper, Flume, and Kafka.
Introduction to Cryptography
CSCI-UA 478 Identical to MATH-UA 243. Prerequisite: Basic Algorithms (CSCI-UA 310). 4 points.
An introduction to the principles and practice of cryptography and its application to network security. Topics include symmetric-key encryption (block ciphers, modes of operations, AES), message authentication (pseudorandom functions, CBC-MAC), public-key encryption (RSA, ElGamal), digital signatures (RSA, Fiat-Shamir), and authentication applications (identification, zero-knowledge).
Data Management and Analysis
CSCI-UA 479 Prerequisite: Data Structures (CSCI-UA 102). Students who complete this course with a C or better are not eligible to take Database Design and Implementation (CSCI-UA 60); Albert blocks them from enrolling in it. Offered in the fall and spring. 4 points.
Extracting, transforming, and analyzing data in myriad formats. Using traditional relational databases as well as non-relational databases to store, manipulate, and query data. Students write custom programs, create queries, and use data analysis tools and libraries on a wide array of data sets. Additional topics: data modeling, cloud databases, and API programming.
Special Topics in Computer Science
CSCI-UA 480 Topics determine prerequisites. May be repeated for major credit when different topics are covered. Offered in the fall and spring. 4 points.
Detailed course descriptions are available when advanced topics are announced each semester. Typical offerings include, but are not limited to, Bioinformatics, Building Robots, Computer Graphics, Machine Learning, Network Programming, Computer Vision, and Multimedia for Majors.
Research, Internship, and Independent Study
CSCI-UA 520, 521 Prerequisite: permission of the department. 4 points per term.
The student is supervised by a faculty member actively engaged in research, possibly leading to results publishable in the computer science literature. A substantial commitment to this work is expected. The research project may be one or two semesters, to be determined in consultation with the faculty supervisor. Students taking this course for honors in computer science are required to write an honors thesis. All other students must submit a write-up of the research results at the conclusion of the project.
Internship in Computer Science
CSCI-UA 897, 898 Restricted to declared computer science majors. Internship credit does not count toward major requirements, but does apply toward completion of the CAS degree. CSCI-UA 897 is offered in the fall and CSCI-UA 898 in the spring. 1 to 4 points per term.
An internship in computer science is an excellent complement to formal course work. We strongly recommend that students have some practical training along with their classroom experience, so they can explore different career options and gain hands-on experience. An internship is for majors only, and students must have an overall GPA of 3.0 and a computer science GPA of 3.5.
CSCI-UA 997, 998 Prerequisite: permission of the department. Does not satisfy the major elective requirement. 1 to 4 points per term.
Students majoring in the department are permitted to work on an individual basis under the supervision of a full-time faculty member in the department if they have maintained an overall GPA of 3.0 and a GPA of 3.5 in computer science and have a study proposal that is approved by the director of undergraduate studies. Students are expected to spend about three to six hours a week on their project.
Graduate Courses Open to Undergraduates
A limited number of graduate courses are open to undergraduate students who have maintained a GPA of 3.5 or better in computer science, subject to permission of the director of undergraduate studies and the professor of the course. These may be substituted for undergraduate elective credit, or reserved for graduate credit if the student is pursuing the accelerated master's program. Consult the department's website for details.