A student majoring in computer science must successfully complete 36 credits of coursework in computer science plus 20 credits of coursework in mathematics and science distributed as follows:
Must be taken concurrently with CMPSC R131
4.00
This is a rigorous introduction to computer science in Java with an emphasis on problem solving, structured programming, object-oriented programming, and graphical user interfaces. Topics include expressions, input/output, control structures, intrinsic data types, classes and methods, iteration, top-down programming, arrays, graphical user interfaces, and elements of UML. Normally offered each semester.
Quantitative Reasoning
CMPSC F131
4.00
Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the Java language. The course introduce another programming language - C - and also focuses on the pure Object-Oriented features of Java, such as inheritance, polymorphism, and exceptions, as well as on simple data structures (lists, stacks, and queues) and algorithms (searching and sorting). By the end of the semester students will be able to develop sizable (several pages long) computer programs in the C and Java languages. Efficient C and Java program development requires an Integrated Development Environment (IDE) - a collection of tools that make it possible to edit, compile, and debug C and Java programs. Our IDE of choice is Eclipse. Eclipse is free and available for many operating systems, including Microsoft Windows (all flavors), Linux, Unix, and Mac OS X.
Quantitative Reasoning
CMPSC F132
4.00
Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the C language. Normally offered each semester.
Quantitative Reasoning
CMPSC-F265
4.00
Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools. Emphasis is placed on program design and code re-use. Topics include: encapsulation, inheritance and polymorphism, UML, refactoring, parent-child relationships, properties, event-driven programming, test cases, regular expressions, constraints, XML, design patterns, and graphical user interfaces. We deal with some operating system and programming environment issues and also with code packaging. C++ is a very large language, so we do not attempt to cover it all. Instead we work with a carefully selected subset of language elements that permits students to exploit the powerful Qt libraries and write robust, idiomatic, and interesting code. By the end of the course, the student should have a good command of C++, facility using and building libraries, an understanding and appreciation of the design patterns that we covered, and a well-established discipline of refactoring and code reuse. Prerequisite: CMPSC F265 (which may be taken concurrently). Normally offered each semester.
Quantitative Reasoning
CMPSC F265.
4.00
This course deals with the structure and operation of the major hardware components of a computer. Topics include basic logic design, basic datapath construction, basic pipelining, I/O system design, issues in memory hierarchy and network interface design. Normally offered each fall semester.
Quantitative Reasoning
CMPSC F353 & CMPSC F265 and Working knowledge of C++.
4.00
This course presents an overview of modern operating systems, from the points of view of an application developer and of a system developer. It covers process management, scheduling, concurrency management, multi-threading, memory management, and file system organization. Intensive programming assignments in the C language and in an assembly language help students to learn the POSIX application programming interface (API) and the low-level organization of a general-purpose operating system. Normally offered each spring.
Quantitative Reasoning
CMPSC 265 and MATH 285
4.00
This is an introduction to the design and use of database systems --- systems that manage very large amounts of data. Topics covered include Entity-Relationship (E/R) data model, Relational data model, object-oriented model, and the conversion of E/R and relational models. We shall also learn some database languages, both concrete and abstract, including Structured Query Language (SQL), Object Query Language (OQL), relational algebra, etc. We will introduce the semistructured data, such as the popular Extensible Markup Language (XML), and their usage in database systems as well. The course is intended for computer science students who need to have an in-depth understanding of modern database systems. Normally offered each fall semester.
Quantitative Reasoning
Math Placement score or MATH 121 with a grade of C or better
4.00
Functions, limits and continuity; instantaneous rate of change, tangent slopes, and the definition of the derivative of a function; power, product, and quotient rules, trig derivatives, chain rule, implicit differentiation; higher order derivatives; applications(curve sketching, limits at infinity, optimization, differentials); other transcendental functions (inverse trig functions, exponential and log functions, hyperbolic trig functions); anti-derivatives; indefinite integrals; applications (net change). 4 lecture hours plus 1 recitation session each week. Normally offered each semester.
MATH-165 with a grade of C or better
4.00
Topics include: random variable and distribution; expectation and variance; special discrete/continuous distributions (uniform, binomial, negative binomial, geometric, hypergeometric, Poisson, normal, and exponential distributions); joint distribution, marginal distribution and conditional distribution; covariance; limit theorems (law of large numbers and central limit theorem); introduction to confidence interval and hypothesis testing; regression analysis. Offered as needed.
MATH-165 with a grade of C or better
4.00
Topics mostly selected from the following list: Logic and set theory, elementary number theory, relations and functions and their properties (equivalence relations, partial order relations, recurrence relations and their solutions); computational complexity of algorithms (big O notation); graphs and their properties (isomorphisms of graphs, Euler and Hamilton paths, shortest path problem, graph coloring) trees (tree traversal, minimum spanning trees); finite state machines; methods of proof (proof by induction, proof by contradiction). Prerequisite: MATH 220 or permission of instructor. 1 term - 4 credits (4 lecture hours per week). Normally offered at least once each year.
Take MATH-121 or MATH 165. PHYS L151 concurrently
3.00
Introduction to the fundamental principles of physics using calculus. The course includes the study of vectors, Newton's laws, rotations, rigid body statics and dynamics, simple harmonic motion, heat and temperature.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
PHYS 151, PHYS L152 concurrently
3.00
This calculus based course begins with topics in kinetic theory and the laws of thermodynamics. It then covers electric charge and field, Gauss' law, electrical potential and capacitance, electric currents and DC circuits. Next magnetism, electromagnetic induction, Faraday's law and AC circuits are discussed. This is followed by Maxwell's equations, electromagnetic waves, and properties of light.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
PHYS 151 concurrently
1.00
The laboratory consists of experiments to illustrate the basic concepts studied in the course: measurements, propagation of errors, vectors, Newton's laws, work and energy, momentum, rotations, oscillations, simple harmonic motion, fluid. Knowledge of algebra, trigonometry, differentiation and integration required.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
PHYS 151 and L151 and PHYS 152 must be taken concurrently
1.00
The laboratory consists of experiments to illustrate the basic concepts studied in the course: heat, gas laws, electric forces, field, and potential, DC and AC circuits, magnetic field, electromagnetic induction, Faraday's law, optics. Calculus, algebra, trigonometry are required. Error propagation, use of Excel, laboratory notebooks, and formal reports required.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
For a suggested course sequence, visit the Computer Science Department page.
Must be taken concurrently with CMPSC R131
4.00
This is a rigorous introduction to computer science in Java with an emphasis on problem solving, structured programming, object-oriented programming, and graphical user interfaces. Topics include expressions, input/output, control structures, intrinsic data types, classes and methods, iteration, top-down programming, arrays, graphical user interfaces, and elements of UML. Normally offered each semester.
Quantitative Reasoning
CMPSC F131
4.00
Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the Java language. The course introduce another programming language - C - and also focuses on the pure Object-Oriented features of Java, such as inheritance, polymorphism, and exceptions, as well as on simple data structures (lists, stacks, and queues) and algorithms (searching and sorting). By the end of the semester students will be able to develop sizable (several pages long) computer programs in the C and Java languages. Efficient C and Java program development requires an Integrated Development Environment (IDE) - a collection of tools that make it possible to edit, compile, and debug C and Java programs. Our IDE of choice is Eclipse. Eclipse is free and available for many operating systems, including Microsoft Windows (all flavors), Linux, Unix, and Mac OS X.
Quantitative Reasoning
CMPSC F132
4.00
Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the C language. Normally offered each semester.
Quantitative Reasoning
CMPSC-F265
4.00
Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools. Emphasis is placed on program design and code re-use. Topics include: encapsulation, inheritance and polymorphism, UML, refactoring, parent-child relationships, properties, event-driven programming, test cases, regular expressions, constraints, XML, design patterns, and graphical user interfaces. We deal with some operating system and programming environment issues and also with code packaging. C++ is a very large language, so we do not attempt to cover it all. Instead we work with a carefully selected subset of language elements that permits students to exploit the powerful Qt libraries and write robust, idiomatic, and interesting code. By the end of the course, the student should have a good command of C++, facility using and building libraries, an understanding and appreciation of the design patterns that we covered, and a well-established discipline of refactoring and code reuse. Prerequisite: CMPSC F265 (which may be taken concurrently). Normally offered each semester.
Quantitative Reasoning
Computer Science majors who have an overall GPA of 3.0 or better and a GPA of 3.0 or better in the major will be eligible for honors. To achieve honors a student must do any two of the following three:
Math Placement score or MATH 121 with a grade of C or better
4.00
Functions, limits and continuity; instantaneous rate of change, tangent slopes, and the definition of the derivative of a function; power, product, and quotient rules, trig derivatives, chain rule, implicit differentiation; higher order derivatives; applications(curve sketching, limits at infinity, optimization, differentials); other transcendental functions (inverse trig functions, exponential and log functions, hyperbolic trig functions); anti-derivatives; indefinite integrals; applications (net change). 4 lecture hours plus 1 recitation session each week. Normally offered each semester.
Must be taken concurrently with CMPSC R131
4.00
This is a rigorous introduction to computer science in Java with an emphasis on problem solving, structured programming, object-oriented programming, and graphical user interfaces. Topics include expressions, input/output, control structures, intrinsic data types, classes and methods, iteration, top-down programming, arrays, graphical user interfaces, and elements of UML. Normally offered each semester.
Quantitative Reasoning
CMPSC F131
4.00
Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the Java language. The course introduce another programming language - C - and also focuses on the pure Object-Oriented features of Java, such as inheritance, polymorphism, and exceptions, as well as on simple data structures (lists, stacks, and queues) and algorithms (searching and sorting). By the end of the semester students will be able to develop sizable (several pages long) computer programs in the C and Java languages. Efficient C and Java program development requires an Integrated Development Environment (IDE) - a collection of tools that make it possible to edit, compile, and debug C and Java programs. Our IDE of choice is Eclipse. Eclipse is free and available for many operating systems, including Microsoft Windows (all flavors), Linux, Unix, and Mac OS X.
Quantitative Reasoning
MATH-165 with a grade of C or better
4.00
Topics mostly selected from the following list: Logic and set theory, elementary number theory, relations and functions and their properties (equivalence relations, partial order relations, recurrence relations and their solutions); computational complexity of algorithms (big O notation); graphs and their properties (isomorphisms of graphs, Euler and Hamilton paths, shortest path problem, graph coloring) trees (tree traversal, minimum spanning trees); finite state machines; methods of proof (proof by induction, proof by contradiction). Prerequisite: MATH 220 or permission of instructor. 1 term - 4 credits (4 lecture hours per week). Normally offered at least once each year.
CMPSC-F265
4.00
Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools. Emphasis is placed on program design and code re-use. Topics include: encapsulation, inheritance and polymorphism, UML, refactoring, parent-child relationships, properties, event-driven programming, test cases, regular expressions, constraints, XML, design patterns, and graphical user interfaces. We deal with some operating system and programming environment issues and also with code packaging. C++ is a very large language, so we do not attempt to cover it all. Instead we work with a carefully selected subset of language elements that permits students to exploit the powerful Qt libraries and write robust, idiomatic, and interesting code. By the end of the course, the student should have a good command of C++, facility using and building libraries, an understanding and appreciation of the design patterns that we covered, and a well-established discipline of refactoring and code reuse. Prerequisite: CMPSC F265 (which may be taken concurrently). Normally offered each semester.
Quantitative Reasoning
CMPSC F132
4.00
Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the C language. Normally offered each semester.
Quantitative Reasoning
Take MATH-121 or MATH 165. PHYS L151 concurrently
3.00
Introduction to the fundamental principles of physics using calculus. The course includes the study of vectors, Newton's laws, rotations, rigid body statics and dynamics, simple harmonic motion, heat and temperature.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
PHYS 151, PHYS L152 concurrently
3.00
This calculus based course begins with topics in kinetic theory and the laws of thermodynamics. It then covers electric charge and field, Gauss' law, electrical potential and capacitance, electric currents and DC circuits. Next magnetism, electromagnetic induction, Faraday's law and AC circuits are discussed. This is followed by Maxwell's equations, electromagnetic waves, and properties of light.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
PHYS 151 concurrently
1.00
The laboratory consists of experiments to illustrate the basic concepts studied in the course: measurements, propagation of errors, vectors, Newton's laws, work and energy, momentum, rotations, oscillations, simple harmonic motion, fluid. Knowledge of algebra, trigonometry, differentiation and integration required.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
PHYS 151 and L151 and PHYS 152 must be taken concurrently
1.00
The laboratory consists of experiments to illustrate the basic concepts studied in the course: heat, gas laws, electric forces, field, and potential, DC and AC circuits, magnetic field, electromagnetic induction, Faraday's law, optics. Calculus, algebra, trigonometry are required. Error propagation, use of Excel, laboratory notebooks, and formal reports required.
Offered Both Fall and Spring
NATURAL SCIENCE FOR BA BFA & BSJ,NATURAL SCIENCE FOR BS,SCI TECH ENGNR
MATH-165 with a grade of C or better
4.00
Topics include: random variable and distribution; expectation and variance; special discrete/continuous distributions (uniform, binomial, negative binomial, geometric, hypergeometric, Poisson, normal, and exponential distributions); joint distribution, marginal distribution and conditional distribution; covariance; limit theorems (law of large numbers and central limit theorem); introduction to confidence interval and hypothesis testing; regression analysis. Offered as needed.
CMPSC 265 and MATH 285
4.00
This is an introduction to the design and use of database systems --- systems that manage very large amounts of data. Topics covered include Entity-Relationship (E/R) data model, Relational data model, object-oriented model, and the conversion of E/R and relational models. We shall also learn some database languages, both concrete and abstract, including Structured Query Language (SQL), Object Query Language (OQL), relational algebra, etc. We will introduce the semistructured data, such as the popular Extensible Markup Language (XML), and their usage in database systems as well. The course is intended for computer science students who need to have an in-depth understanding of modern database systems. Normally offered each fall semester.
Quantitative Reasoning
CMPSC F265.
4.00
This course deals with the structure and operation of the major hardware components of a computer. Topics include basic logic design, basic datapath construction, basic pipelining, I/O system design, issues in memory hierarchy and network interface design. Normally offered each fall semester.
Quantitative Reasoning
CMPSC F353 & CMPSC F265 and Working knowledge of C++.
4.00
This course presents an overview of modern operating systems, from the points of view of an application developer and of a system developer. It covers process management, scheduling, concurrency management, multi-threading, memory management, and file system organization. Intensive programming assignments in the C language and in an assembly language help students to learn the POSIX application programming interface (API) and the low-level organization of a general-purpose operating system. Normally offered each spring.
Quantitative Reasoning