Computer Science

Faculty

Alexander Smith, Interim Chair

Benjamin Fine
Rahul Gomes
Emily Hastings
Rakib Islam
Naeem Seliya
Mounika Vanamala
Bokai Yang

CS 100 Computer Information Technologies (3 crs)

• No credit toward computer science major or minor. Not applicable for satisfying B.S. GE-IB requirement in College of Arts and Sciences.

Development and application of appropriate processes and tools to access, organize, evaluate, and communicate information using spreadsheets (MS Excel), word processors (MS Word), databases (MS Access), presentation software (MS PowerPoint), and web-based/internet utilities. Appropriate for students seeking a broader or deeper preparation for efficiently using computer information technologies.

Attributes: GE IB Communication-Analytical Skills

Lecture/Discussion Hours: 2.5

Lab/Studio Hours: 1

CS 145 Programming for New Programmers (4 crs)

Prerequisite: MATH 109 or concurrent, or placement into MATH 111, 112, 113, 114 or 215. Computer science majors must take concurrently with CS 146. Cannot earn credit in both CS 145 and CS 148

• Students with prior programming experience should take CS 148 instead of CS 145.

A general introduction to programming, introducing data types, procedural abstraction, flow control, and object-oriented design.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 2

CS 146 The Big Picture in Computer Science (1 cr)

Prerequisite: Limited to computer science majors. Must be taken concurrently with CS 145 or CS 148.

• Must be taken by students during their first semester in the computer science major.

Explores how a liberal education relates to computer science, the impacts of computers on society, and ethical expectations of the discipline. Provides an overview of computational thinking and technical topics.

Lecture/Discussion Hours: 1

Lab/Studio Hours: 0

CS 148 Programming for Experienced Programmers (4 crs)

Prerequisite: MATH 109 or concurrent, or placement into MATH 111, 112, 113, 114 or 215. Computer science majors must take concurrently with CS 146. Cannot earn credit in both CS 145 and CS 148

• Students with prior programming experience take CS 148 instead of CS 145.

A project-based study of programming concepts. Topics build upon student's prior exposure to variables, functions, conditionals, loops, and arrays.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 2

CS 163 Introduction to Programming in C++ (3 crs)

• Three years of high school, college preparatory mathematics. No credit for CS majors if taken after or concurrently with CS 145 or CS 148.

A general introduction to the design of computer software. Object-oriented design and implementation techniques including abstraction, encapsulation, and inheritance are emphasized. Applications chosen from mathematics, science, and business are used to demonstrate and motivate understanding of object-oriented programming.

Attributes: GE IB Communication-Analytical Skills

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 170 Computing for the Sciences and Mathematics (3 crs)

Prerequisite: MATH 112, or MATH 113, or placement into MATH 114 or MATH 215.

Aspects of computation that are particularly relevant to scientific computation. Discussion of numeric processing, symbolic processing, data management, data representation, and scientific visualization. Students design and implement computer programs.

Attributes: GE V University Wide

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 245 Advanced Programming and Data Structures (4 crs)

Prerequisite: CS 145 or CS 148. MATH 112 or concurrent enrollment, MATH 113 or concurrent enrollment, or placement into MATH 114 or MATH 215.

Advanced object-oriented programming techniques including OO design, distributed and concurrent computation, GUI development, and testing. Implementation and use of data structures including lists, stacks, queues, trees, and graphs.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 2

CS 252 Computer Systems (4 crs)

Prerequisite: CS 245, MATH 114 or concurrent enrollment.

Introduction to systems level concepts including number system representation, digital logic, machine models, assembly language, UNIX, C programming and memory management, and parallel architectures.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 2

CS 260 Database Systems (4 crs)

Prerequisite: CS 145 or CS 148

A study of fundamental database concepts including: SQL, database design and normalization, transactions and concurrency, embedded SQL, and stored procedures.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 2

CS 268 Web Systems (3 crs)

Prerequisite: CS 145 or CS 148

Introduction to programming Web-based applications. Multiple modern Web technologies are covered in depth and compared. Web frameworks, server configurations, and security issues are discussed.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 278 Digital System Design (4 crs)

Prerequisite: Either CS 145 or CS 163, or consent of instructor.

• No credit if taken after Special Topics course of the same title.

Logic components, Boolean algebra and algorithmic logic simplification, combinational logic analysis and synthesis, synchronous and asynchronous sequential logic analysis and synthesis, finite state machine design, programmable logic and FPGAs, Verilog programming for synthesis.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 2

CS 291 Special Topics (1-3 crs)

• See current Class Schedule.

An examination of current topical material of special interest to students and faculty.

Repeat: Course may be repeated

CS 318 Fundamentals of Web Page Design (3 crs)

Basic concepts, coding standards, accessibility guidelines, and technologies of client-side Web page design. Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), and techniques for controlling page layout, animations, and user interactions.

Attributes: GE IB Communication-Analytical Skills

Lecture/Discussion Hours: 2

Lab/Studio Hours: 2

CS 319 Introduction to Web Programming (3 crs)

Prerequisite: CS 318. No credit if taken after CS 268.

• No credit toward computer science major requirements.

Introduction to client and server side Web programming. Includes basic programming concepts, user input validation, dynamic Web pages, and data retrieval and display.

Attributes: GE IB Communication-Analytical Skills

Lecture/Discussion Hours: 2

Lab/Studio Hours: 2

CS 320 Web Database Design and Implementation (3 crs)

Prerequisite: CS 318 or concurrent enrollment; CS 319 or concurrent enrollment.

• No credit toward computer science major requirements.

Introduction to databases for Web applications. Architecture, design considerations, and implementation of relational database systems. Web/database application development.

Lecture/Discussion Hours: 2

Lab/Studio Hours: 2

CS 321 Web Design and Development (3 crs)

Prerequisite: CS 320

Analysis, design, and implementation techniques for Web site development. Includes preparation of design documents development, deployment, and testing. Students complete and deploy a comprehensive Web site working with clients and end-users.

Attributes: Service-Learning, Full 30 Hours

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 322 Animation Programming (3 crs)

Introduction to current technical and creative trends in digital animation principles, including real-time, interactive animations, gestural interfaces, and basic motion capture for use in animation and game development.

Lecture/Discussion Hours: 0

Lab/Studio Hours: 3

CS 330 Programming Languages (3 crs)

Prerequisite: CS 252

Study building blocks of modern programming and programming paradigms including functional, imperative, object-oriented, and logical. Emphasis on teaching students how to learn new programming languages. In-depth study of C++ and memory management techniques.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 335 Algorithms (3 crs)

Prerequisite: CS 245. Concurrent enrollment in MATH 314.

Discussion of algorithm design, problem-solving methods. Specific algorithm topics include divide-and-conquer, dynamic programming, and backtracking.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 352 Computer Architecture (3 crs)

Prerequisite: CS 252

A study of hardware organization and architecture including performance metrics, machine data and instruction representations, computer arithmetic, assembly language programming, ALU design, CPU design and control, micro-programming, pipelining, cache memory systems, and I/O peripherals.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 355 Software Engineering I (3 crs)

Prerequisite: CS 260 and CS 268. Credit cannot be earned in both CS 321 and CS 355.

A hands-on experience in software engineering with key aspects of the software development life cycle. Focus is on the application of a high-level development environment to the fulfillment of an object-oriented software design specification. An introduction to modern design patterns.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 370 Computer Security (3 crs)

Prerequisite: CS 252

Study of system, network, database, application and web security. Practical experience with tools for information gathering, vulnerability analysis, system hardening and intrusion detection as used for defending computer systems, culminating in a cyberwar exercise.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 376 Cryptography and Network Security (3 crs)

Prerequisite: CS 245 or DS 250

Basic and advanced cryptographic protocols and techniques. Block and stream ciphers, one-way hash functions, public-key and public-key digital signature algorithms, and key-exchange protocols. Network authentication, secure email, IP SEC, and web security.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 388 UNIX Systems Programming (3 crs)

• Programming experience in C or C++.

In-depth coverage of the UNIX command shell, file manipulation, process control, file system utilities, mail, pipes and filters, I/O redirection, process management, UNIX editors, scripting language, and shell scripting.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 396 Junior Seminar (1 cr)

Prerequisite: CS 146 and minimum junior standing, or consent of instructor. Limited to computer science majors.

Examination of selected topics in computer science through invited business speakers, traditional lecture, and independent investigation.

Lecture/Discussion Hours: 1

Lab/Studio Hours: 0

CS 399 Independent Study - Juniors (1-3 crs)

Prerequisite: Minimum junior standing.

Consent: Department Consent Required

Individual project under the direction of a faculty member.

Repeat: Course may be repeated

CS 420 Artificial Intelligence (3 crs)

Prerequisite: CS 245 or DS 250

Investigation of the theories and techniques of knowledge representation and automated reasoning as the foundation of artificial intelligence. Includes the comparative analysis of established theories and the synthesis of automated problem-solving behavior.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 425 Machine Learning (3 crs)

Prerequisite: MATH 246; CS 245

This course introduces students to the field of machine learning. Students will learn about the theoretical foundations of machine learning and how to apply machine learning to solve new problems. The course focuses on three major paradigms in machine learning which are supervised learning, unsupervised learning and data visualization.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 426 Deep Learning (3 crs)

Prerequisite: CS 245

This course will introduce students to the foundations of deep learning and how it can be used for a variety of tasks ranging from feature extraction, supervised and unsupervised learning, and sequence modelling. Students will get an opportunity to create state-of-the-art deep learning models using Python programming and TensorFlow framework to make machines think and interpret big data with remarkable precision.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 436 Mobile Software Development (3 crs)

Prerequisite: CS 245

Developing software for mobile devices, designing for interruptions, creating service-oriented architectures, and sensing the physical world.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 450 Theory of Computation (3 crs)

Prerequisite: CS 335

A study of finite automata and regular languages, pushdown automata and context-free languages, Turing machines and recursively enumerable sets, linear-bounded automata and context-sensitive languages, computability and the halting problem, undecidable problems, and the Chomsky hierarchy.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 452 Operating Systems (3 crs)

Prerequisite: CS 252

A study of modern operating system concepts, process/thread structure, process management, scheduling, synchronization. Memory management, virtual memory, caching. Storage and I/O device management. Distributed operating systems and distributed computation.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 455 Computer Graphics (3 crs)

Prerequisite: CS 335

A study of 3-D modeling, rendering, and animation. Modeling includes constructive solids geometry, NURBS, and scene graphs. Rendering includes lighting models, raytracing, radiosity, mapping, and real-time issues. Animation includes keyframing, kinematics, dynamics, collision detection, and AI.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 462 Computer Networks (3 crs)

Prerequisite: CS 452

Fundamental concepts of data transmission, network architecture, data security, error control, routing, switching, and congestion control. Study of network protocols: IEEE 802.x, TCP/IP, ATM, Wireless Internet and Mobile Computing.

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 482 Research in Computer Science I (3 crs)

Prerequisite: CS 355. Limited to computer science majors and minors. Minimum resident and total GPA of 3.00.

Consent: Instructor Consent Required

An introduction to structured research within computer science. Students develop a complete research proposal that poses an important open question in computer science and presents a well-developed strategy for its substantive investigation.

Attributes: Capstone Course

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 485 Software Engineering II (3 crs)

Prerequisite: CS 355

An application of software engineering principles to a software project developed throughout the semester. Students will work in groups to describe, design, implement, test, and deliver a software product for a client.

Attributes: LE-S3 Creativity, Service-Learning, Full 30 Hours, Capstone Course

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 490 Computer Science Practicum (3 crs)

Prerequisite: CS 485

• Cannot be taken for credit toward fulfilling the major if the student has completed three or more credits in CS 498 (formerly CS 405).

A reflective examination of the principles and practices inherent to the study of computer science, including completion of a comprehensive project.

Attributes: Service-Learning Optional, Capstone Course

Grading Basis: S/U Only Grade Basis

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 491 Special Topics (3 crs)

• See current Class Schedule.

An examination of current topical material of special interest to students and faculty. Topics that have been offered include: Analysis of Algorithms, Cryptography and Data Security, Computer Animation, Fuzzy Logic, Advanced Internet Applications, Data Mining, and Computational Biology.

Repeat: Course may be repeated

CS 492 Research in Computer Science II (3 crs)

Prerequisite: CS 482. Limited to computer science majors and minors.

Consent: Instructor Consent Required

Students carry out a research investigation based on a structured research proposal. The investigation includes a detailed analysis of existing literature in the area of investigation and the preparation of a research dissemination article.

Attributes: Capstone Course

Lecture/Discussion Hours: 3

Lab/Studio Hours: 0

CS 493 Collaborative Research (1-3 crs)

Prerequisite: CS 355

An in-depth investigation into open issues within computer science and/or its application to other disciplines.

CS 498 Computer Science Internship (1-6 crs)

Consent: Department Consent Required

• A maximum of three credits can be counted as a CS elective.

Practical work experience that extends knowledge gained in prior courses.

Attributes: Service-Learning Optional, Capstone Course, Internship

Repeat: Course may be repeated for a maximum of 6 credits

CS 499 Independent Study - Seniors (1-3 crs)

Prerequisite: Minimum senior standing.

Consent: Department Consent Required

Individual project under the direction of a faculty member.

Repeat: Course may be repeated

CS 793 Special Topics in Computer Science (1-3 crs)

Consent: Department Consent Required

Permits groups of graduate students to study topics in the field of computer science.

Repeat: Course may be repeated

Grading Basis: No S/U Grade Option

CS 797 Independent Study (1-3 crs)

Consent: Department Consent Required

Individual project under the direction of a faculty member.

Repeat: Course may be repeated

Grading Basis: No S/U Grade Option