CS Undergraduate Courses

The Department of Computer Science offers a broad range of courses in several areas of Computer Science including foundations of computer science, algorithms, artificial intelligence, machine learning, database and knowledgebase systems, distributed computing, networks, computer security, complexity theory, multimedia computing, programming languages, software engineering, and software systems.

Most of these courses have prerequisites and thus have to be taken in certain orders; refer to the Computer Science Degree Flowchart.


Course Descriptions

CS 1310-Introduction to Computer Programming (3-0) (TCCN COSC 1301)

Fundamentals of computers, including software, hardware, impact on society, and beginning programming in a high-level language, such as FORTRAN, BASIC, LOGO, and Python. Designed for students not engaged in mathematically oriented studies.
Offered: fall and spring as needed.

Homepage

CS 1401-Introduction to Computer Science (3-3) (TCCN COSC 1430)

First course for students majoring in Computer Science. Introduction to problem solving with computers, including representation, control structures, and software development methods; closed laboratory and programming assignments in a high-level language; programming environments; social and ethical aspects of computing.
Prerequisite: MATH 1508 or MATH 1411 with a grade of C or better
Offered: fall and spring.

Outcomes, PDF | Syllabus, PDF | Homepage

CS 1420-Computer Programming for Scientists and Engineers (3-3)

Introduction to computers and problem solving with digital computers. A procedural programming language will be utilized to solve scientific and engineering oriented problems. Visualization methods will also be used to provide an experimental approach to problem solving.
Prerequisite: MATH 1508 or MATH 1411 with a grade of C or better
Offered: fall and spring as needed

Outcomes, PDF | [Syllabus, PDF]

CS 2302-Data Structures (3-3)(TCCN COS 2318)

The definition and implementation of abstract data types; representation of data using sets, lists, trees, and graphs; the design and implementation of traversal, search, and sort algorithms; and the space and time analysis of algorithms.
Prerequisite: CS 2401 and MATH 2300 each with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 2401-Elementary Data Structures and Algorithms (3-3) (TCCN COSC 1418)

Second course for students majoring in Computer Science. Fundamental computing algorithms, including searching and sorting; elementary abstract data types including linked lists, stacks, queues and trees; introduction to algorithm analysis.
Prerequisite: CS 1401 with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 3190-Special Topics in Programming (1-0)

Essential constructs and usage of either a programming language (e.g., C, PROLOG, Haskell, C++, Perl), an operating system (e.g., Unix), or advanced topics within a particular language or OS (e.g., CGI programming, Java GUI programming, Windows GUI programming, Intended to allow advanced students to acquire working proficiency quickly. The language/OS will vary. May not be counted toward the major in Computer Science. May be repeated for credit when the topic differs.
Prerequisite: CS 3360 with a grade of C or bette.
Offered: as needed

CS 3195-Junior Professional Orientation (1-0)

Introduction to the Computer Science profession with a special emphasis on professional ethics. Required of all students prior to graduation.
Prerequisite: CS 2302 with a grade of C or better
Offered: spring.

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 3320-Computer Architecture II: Advanced Computer Design and Implementation (3-0)

The organization and structure and the major hardware components of computers; the mechanics of information transfer and control within digital computer systems.
Prerequisite: CS 3432 and EE 2369 each with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 3331-Advanced Object-Oriented Programming (3-0)

An in-depth exposure to the object-oriented programming paradigm, which builds upon programming experience gained in lower-level computer science classes. Emphasis on programming in an object-oriented language with which students are already familiar, and on requirements, testing, code reading, and comprehension.
Prerequisite: CS 2302 with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 3335-Systems Programming (3-0)

The design and implementation of the programming environment including editors, compilers, loaders and linkers, debuggers and operating systems.
Prerequisite: CS 2302 with a grade of C or better
Offered: not until further notice

[Syllabus, PDF] [Homepage]

CS 3350-Automata, Computability, and Formal Languages (3-0)

Theoretical computing models and the formal languages they characterize: Finite state machines, regular expressions, pushdown automata, context-free grammars, Turing machines and computability. Capabilities and limitations of each model, and applications including lexical analysis and parsing.
Prerequisite: CS 2302 with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Syllabus, PDF]

CS 3360-Design and Implementation of Programming Languages (3-0)

Design features of modern programming languages including flow control mechanism and data structures; techniques for implementation of these features.
Prerequisite: CS 2302 with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 3370-Computer Graphics (3-0)

An introduction to representation and display of graphical information including line, character, and curve generation. Emphasis on two-dimensional techniques.
Prerequisites: CS 2302 and MATH 3323 each with a grade of C or better
Offered: fall of odd years

[Outcomes, PDF] [Homepage]

CS 3432-Computer Architecture I: Basic Computer Organization and Design (3-3)

Compile and assembly processes; machine organization; fetch/decode/execute process; symbolic coding of instructions and data, including instruction types, formats, and addressing modes; implementation of data and control structures, subroutines, and linkage; and input/output handling at the assembly level, including memory-mapped I/O and interrupt and exception handling.
Prerequisites: CS 2302 and EE 2369 each with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [Homepage]

CS 4181-Undergraduate Seminar (1-0)

Advanced topics in computer science. Presentation and discussion of various topics in computer science by faculty, students, speakers from other institutions and from industry.

CS 4191-Introduction to Computer Science Research (0-0-1)

Introduction to the basic skills needed for research, including oral presentation skills, report writing skills, comprehension, critiquing and feedback skills, teamwork skills, and research skills such as formulating a problem, planning research efforts, and managing time. These skills are taught in a group environment as part of a research project. Participation requires departmental approval and permission of the faculty member(s) supervising this research
Prerequisite: Department approval

CS 4195-Senior Professional Orientation (1-0)

This course has been replaced by CS 3195.

CS 4310-Software Engineering: Requirements Engineering (3-0)

Methodologies, approaches, and techniques associated with software requirements analysis and definition; process for defining requirements of a system including feasibility study, requirements elicitation, formal specification, modeling, validation, verification, and documentation; other topics include cooperative teamwork and project management; first semester of a two-semester capstone project in which students work with a customer.
Prerequisite: CS 3331 with a grade of C or better and departmental approval
Offered: fall

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 4311-Software Engineering: Design and Implementation (3-0)

Methodologies, approaches, and techniques associated with software design, implementation, and testing of a software system; other topics include cooperative teamwork, project management, and documentation; second semester of a two-semester capstone project in which students design and implement a real-world application specified in CS 4310.
Prerequisite: CS 4310 with a grade of C or better
Offered: spring

[Outcomes, PDF] [Homepage]

CS 4316-Computer Networks (3-0)

Introduction to data communications. Covered topics include: data transmission, link control, encoding, multiplexing, switching, network topologies, internetworking, address resolution, protocol layering, routing methods, data security, and distributed systems.
Prerequisites: CS 2302 and EE 3384 each with a grade of C or better
Offered: fall

[Outcomes, PDF] [Homepage]

CS 4317 Human-Computer Interaction

Models and methods of human-computer interaction. Theory of human-computer interaction. Development methods for interfaces such as user-centered design, prototyping, and participatory design. Evaluation and testing techniques, such as heuristic evaluation, the cognitive walkthrough, and usability testing. User-interface programming. Ethical and societal issues.
Prerequisite: CS 2302 with a grade of C or better
Offered: fall

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 4320-Artificial Intelligence (3-0)

Introduction to basic concepts and techniques of artificial intelligence including knowledge representation, search strategies, symbolic logic, expert systems, and applications.
Prerequisite: 2302 with a grade of C or better
Offered: spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 4342-Database Management (3-0)

Introduction to data base concepts, hierarchical, network and relational data models, data description and query languages, file and index organization, and file security and integrity.
Prerequisite: 2302 with a grade of C or better
Offered: fall and spring

[Outcomes, PDF] [ Homepage]

CS 4351-Computer Security (3-0)

General concepts and applied methods of computer security,especially as they relate to confidentiality, integrity, and availability of information assets. Topics include system security analysis; access control and security models; identification and authentication; protection against external and internal threats; communication protocols; Internet security.
Prerequisite: CS 3331 with a grade of C or better
Offered: fall of every third year

[Syllabus]

CS 4352-Compilers and Interpreters (3-0)

The structure of compilers and interpreters: lexical syntax and semantic analysis, formal description of programming languages, parsing techniques, intermediate languages, optimization and code generation.
Prerequisite: CS 3350 with a grade of C or better
Offered: fall of even years

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 4365-Topics in Soft Computing (3-0)

Introduction to basic concepts and techniques of soft computing, including neural, fuzzy, evolutionary, and interval computations, and their applications. This course may be repeated for credit when topic varies.
Prerequisites: MATH 4329
Offered: spring

[Outcomes, PDF] [Syllabus, PDF] [Homepage]

CS 4371-Computer Science Problems (0-0-3)

Original investigation of special problems selected by the student in consultation with the instructor and with the permission of the Chairperson of the Computer Science Department. May be repeated for credit.
Prerequisites: Senior standing in Computer Science and department approval

[Outcomes, PDF] [Contract, DOC]

CS 4375-Theory of Operating Systems (3-0)

Process and thread management, concurrency, memory management, processor scheduling, I/O management and disk scheduling, and file management.
Prerequisite: CS 3320 with a grade of C or better
Offered: fall

[Outcomes, PDF] [Syllabus, PDF] [ Homepage]

CS 4390-Special Topics in Computer Science (3-0)

Selected topics of current interest in Computer Science. May be repeated for credit when topic varies.
Prerequisites: Senior standing in Computer Science and department approval
Offered: fall and spring as needed

[Outcomes, PDF]
[Homepage - Wireless Networks for Biomedical Applications]
[Homepage - Search Engine Technologies]

CS 4392-Research Methods in Computer Science (3-0)

An advanced course in the skills needed for research in Computer Science, including a survey of the various research paradigms and experimental protocols used across the field. Within a particular research area of the student?s choice, a student will learn to: judge whether a question is a research question; design an appropriate experiment to answer a research question; interpret the results of an experiment, including selection and application of appropriate statistical tests; present and defend their research orally and in writing.

[Homepage]

CS 4393-Senior Project (0-0-3)

Research and analysis leading to a new publishable theoretical result or a new useful sophisticated piece of software. Includes formal project proposal, generation of a well-documented report, and a presentation of the results to faculty and students. Intended to allow advanced undergraduate students to actively and productively participate in research. A research topic must be selected by the student in consultation with the instructor and with the permission of the Chairperson of the Computer Science Department.
Prerequisite: Department approval

[Back to Top]