CS 201 Procedural Programming
This course introduces the fundamental concepts related to computer programming, preparing students with the skills to write basic computer programs, and the knowledge to understand basic programs written by others. Topics include: built-in data types, flow control using conditionals and loops, arrays, console I/O, static methods, recursion, using libraries, and using classes to create your own data types. (4 credits) Prerequisite: MATH 162 (4 credits)
CS 203 Object Oriented Programming
This course covers programming in Java, specifically focusing on object oriented concepts and creating GUI applications. Topics include: classes and objects, primitives and references, inheritance and polymorphism, interfaces and abstract classes, exception handling, GUI programming in Swing, and serialization and file I/O. (4 credits) Prerequisite: CS 201
CS 221 Data Structures
Students use computer programming laboratory problems to apply the principles of data structure organization in a practical environment and develop advanced programming skills. The organizing power of knowledge is found to be the source of order in computer data structures. Topics include: abstract data types, internal representation of data, stacks, queues, linked lists, hash maps, binary trees, heaps, red-black trees, 3-4 trees and B trees. (4 credits) Prerequisite: CS 203
MATH 272 Discrete Mathematics
Discrete mathematics, the study of finite processes and discrete phenomena, is essential for computer science. Topics include logic and sets, relations and functions, vertex-edge graphs, recursion, and combinatorics. (4 credits) Prerequisite: MATH 162, WTG 192
MATH 281 Calculus 1
Calculus, one of the most useful areas of mathematics, is the study of continuous change. It provides the language and concepts used by modern science to quantify the laws of nature and the numerical techniques through which this knowledge is applied to enrich daily life. Using the mathematics computer laboratory, students gain a clear understanding of the fundamental principles of calculus and how they are applied in real-world situations. Topics: limits, continuity, derivatives, applications of derivatives, integrals, and the fundamental theorem of calculus. (4 credits) Prerequisite: MATH 162
MATH 282 Calculus 2
Calculus, one of the most useful areas of mathematics, is the study of continuous change. It provides the language and concepts used by modern science to quantify the laws of nature and the numerical techniques through which this knowledge is applied to enrich daily life. Using the mathematics computer laboratory, students gain a clear understanding of the fundamental principles of calculus and how they are applied in real-world situations. Topics: techniques of integration, further applications of derivatives, and applications of integration. (4 credits) Prerequisite: MATH 281
MATH 286 Linear Algebra 1
Linear algebra studies linearity, the simplest form of quantitative relationship, and provides a basis for the study of many areas of pure and applied mathematics, as well as key applications in the physical, biological, and social sciences. Topics include systems of linear equations, vectors, vector equations, matrices, determinants, vector spaces, bases, and linear transformations. (4 credits) Prerequisite: MATH 282
CS 321 Introduction to Algorithms
Students are introduced to the study algorithms. Topics include: searching and sorting algorithms, computing time of programs and representations and algorithms for graphs. This course also includes a significant research paper around the efficiencies and running times of different algorithms. (4 credits) Prerequisite: CS 221
CS 363 Computer Organization and Architecture
This course presents the internal structure of a computer, an introduction to assembly language, and the design of digital logic circuits and their use in structuring the various functional components of a computer, such as the memory and central processing unit. Topics include: machine organization, logic gates, circuits, machine language, assembly language, memory, I/O systems, and how these all combine to create typical and atypical architectures. (4 credits) Prerequisite: CS 201 and CS 272 / MATH 272
CS 390 Fundamental Programming Practices
This course provides a focused program for enhancing programming and analytical skills in five areas: problem-solving, data structures, object-oriented programming, the Java programming language, and the use of recursion in Java programs. These topics are of particular importance as a prerequisite for the courses in the graduate program in Computer Science. Topics include: elements of Java programming, object-oriented design and implementation, data structures (including lists, stacks, queues, binary search trees, hash tables, and sets), the exception hierarchy, file i/o and streams, and JDBC. (4 credits) Prerequisite: For undergraduate students: CS 221; for graduate students: consent of the department faculty
CS 401 Modern Programming Practices: Current Concepts and Best Practices in Software Development
This course presents the fundamental principles of object-oriented programming. Students will learn how to write reusable and better-maintained software, and integrate this knowledge with laboratory assignments and projects. Topics include: fundamental principles and models of object-oriented programming, UML class diagrams and design principles that promote reusability and maintainability of software. (4 credits) Prerequisite: For undergraduate students: CS 390; for graduate students: consent of the department faculty
CS 422 Database Systems
Database systems organize and retrieve information, allowing the user to access the desired information easily and efficiently. Topics include: relational data model; SQL; ER modeling; relational algebra; data normalization; transactions; objects in the database; data security and integrity; data warehousing, OLAP, and data mining; distributed databases; and study of a specific commercial database system. (4 credits) Prerequisite: CS 401 or consent of the Department faculty
CS 425 Software Engineering (including Senior Project)
This course introduces the student to best practices in software development through a software development methodology. Students will learn how to bring together their skills in object-oriented analysis and design, in the use of UML diagrams for modeling software solutions, to produce robust, easily maintainable software. A software development methodology describes when and how object-oriented concepts and UML diagrams should be used to accomplish the aim of building quality software. The course centers on a small project in which the principles discussed in the lecture format can be illustrated and applied. By the end of the course, the student will have a running application, built in accord with the high standards of a contemporary development methodology. (4 credits) Prerequisite: CS 401 or consent of the Department faculty
CS 472 Web Application Programming
This course covers languages, tools, and technologies for developing interactive and dynamic web sites. Topics and technologies include HTTP, HTML, CSS, client and server-side programming, database interactions, web security, and Ajax technologies. (4 credits) Prerequisite: CS 401 or consent of the Department faculty