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.
- CS 1310 Intro to Computer Programming (fall and spring)
- CS 1401 Introduction to Computer Science (fall and spring)
- CS 1420 Computer Programming for Scientists and Engineers (fall and spring)
- CS 2302 Data Structures (fall and spring)
- CS 2401 Elementary Data Structures and Algorithms (fall and spring)
- CS 3190 Special Topics in Programming
- CS 3195 Junior Professional Orientation (spring)
- CS 3320 Computer Architecture II (fall and spring)
- CS 3331 Advanced Object-Oriented Programming (fall and spring)
- CS 3335 Systems Programming (spring)
- CS 3350 Automata, Computability, and Formal Languages (fall and spring)
- CS 3360 Design and Implementation of Programming Languages (fall and spring)
- CS 3370 Computer Graphics (fall, odd years)
- CS 3432 Computer Architecture I (fall and spring)
- CS 4181 Undergraduate Seminar
- CS 4191 Introduction to Computer Science Research
- CS 4195 Senior Professional
Orientation
- CS 4310 Software Engineering I (fall)
- CS 4311 Software Engineering II (spring)
- CS 4316 Computer Networks (fall)
- CS 4317 Human-Computer Interaction (fall)
- CS 4320 Artificial Intelligence (spring)
- CS 4342 Database Management (fall and spring)
- CS 4351 Computer Security (fall, 3rd years)
- CS 4352 Compilers and Interpreters (fall, even years)
- CS 4365 Topics in Soft Computing (spring)
- CS 4371 Computer Science Problems
- CS 4375 Theory of Operating Systems (fall)
- CS 4390 Special Topics in Computer Science
- CS 4392 Research Methods in Computer Science
- CS 4393 Senior Project
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.
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.
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
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
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
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.
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
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
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
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
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
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
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
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
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
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.
Offered:
fall
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.
Offered:
fall
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.
Offered:
spring
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
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
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
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
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
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
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
[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
