COMPUTER SCIENCE (C-S) Courses
Internships
Students majoring in computer science who wish to enroll in CEI 450
or CEI 475, University Internships, must have completed 15 credits
of computer science course work, including C-S 220, and must have
a minimum GPA of 2.50 in computer science courses to be eligible
for
departmental approval and supervision. Credits earned in internships
do not apply to major or minor requirements.
+ above a course number indicates a General Education course.
+
C-S 101 Cr. 4
Introduction to Computing
Computers and computer software are an integral part of modern society.
This course explores this relationship. Students will examine the computer
as a problem-solving tool through the use of database, spreadsheets
and small scale programming. Students will examine the computer as
a communication tool through the use of database, spreadsheets and
small scale programming. Students will examine the computer as a communication
tool through the use of word processing and the Internet. Other topics
include the history and future of computer technology, computer hardware
basics, man/machine relationships, applications of computers in various
disciplines, and social/ethical issues. Credits earned in C-S 101 cannot
be applied to the C-S major or minor. Usually Offered: Fall and Spring
Semester and Summer Term
C-S 102 Cr. 3
Web Development and the Internet
An introduction to the Internet and the fundamentals of Web
page design: including history and technical structure of the
Internet, markup languages and Web page programming. Technical
issues include client/server interfaces and network protocols.
Other topics include societal issues: privacy, security, accessibility,
intellectual property and censorship. Usually Offered: Occasionally
C-S 103 Cr. 1
Elementary Database Principles and Design
An introduction to the design and implementation of relational databases. Design concepts will
include entity-relationship modeling, relational table structure, keys, foreign keys, referential
integrity, and data quality. Implementation concepts will emphasize extracting information through
queries, reports, and forms. Usually Offered: Spring
C-S 104 Cr. 1
Elementary Spreadsheet Principles and Design
An introduction to the design and implementation of business spreadsheets. Design
principles will include cell content, use of functions and formulas, relative and
absolute addressing, and formatting. Modern spreadsheet software will be used to
implement the spreadsheets, with an emphasis on presenting numeric data in an organized manner.
Usually Offered: Spring
+
C-S 120 Cr. 4
Software Design I
An introduction to the fundamentals of software development; including
software classes, objects, inheritance, polymorphism, logic, selection
control, repetition control, subprograms, parameter passage, and rudimentary
software engineering techniques. Students complete numerous programming
projects using a modern programming language. Prerequisite: MTH 151
or 175, or math placement test scores at, or above, MTH 151. Usually
Offered: Fall and Spring Semester
C-S 220 Cr. 3
Software Design II
This is a second course in the design of programs. Emphasis is placed
on data abstraction and its application in design. Definitions of abstract
data types are examined. The following structures are examined as methods
for implementing data abstractions: recursion, sets, stacks, queues,
strings, and various linked lists. Students will be expected to write
several programs using these techniques in a modern programming language.
Prerequisite: C-S 120. Usually Offered: Fall and Spring Semester
C-S 224 Cr. 1-3
Introduction to the ____________ Programming Language
This course presents the syntax and semantics of a particular
programming language. Different offerings of the course will
present different languages. Students are expected to be fluent
in another programming language prior to enrollment. Prerequisite:
a prior computer science course appropriate to the language
being offered. (Repeatable for credit - maximum 6. Each repeat
must be for a different language.) Usually Offered: On Demand
C-S 270 Cr. 3
Assembler Programming and Introduction to Computer Organization
Programming in machine and assembler language is integrated with an
introduction to the organization of computer hardware. An examination
of the instruction set merges with descriptions of the related hardware
devices. Laboratory assignments include the construction of software,
as well as hardware, units. Topics include basic instruction types,
data representation, addressing modes, combinational circuit design,
flip-flops, registers, the ALU, computer memory, and interrupt handling.
Prerequisite: C-S 120, MTH 225 or concurrent enrollment. Usually Offered:
Fall and Spring Semester
C-S 301/501 Cr. 2
Using the Internet
An introduction to the Internet and computer networking. A survey of
Internet resources and methods used to retrieve and create Internet
resources. Topics include: connecting to the Internet, electronic mail,
file transfer, remote login, Mosaic, World Wide Web, Gopher, TCP/IP,
networking hardware. Not applicable to a computer science major or
minor. Usually Offered: On Demand
C-S 340 Cr. 3
Software Design III: Abstract Data Types
An extensive survey of data structures and associated algorithms. An
introduction to algorithm efficiency measures is included as a tool
for deciding among alternate algorithms. Topics include: searching
and sorting in arrays, hash tables, tree traversal and search algorithms,
expression evaluation and graphs. Prerequisites: C-S 220 and MTH 225.
Usually Offered: Fall and Spring Semester
C-S 341 Cr. 3
Software Design IV: Software Engineering
A study of methodologies for the development of reliable software systems.
Several specification, design, and testing techniques are surveyed
with an emphasis on one particular formal specification and formal
design technique. Students work in teams, applying these techniques
to the development of a medium scale (2000-5000 lines) software product.
Prerequisite: C-S 340. Usually Offered: Fall Semester
C-S 342 Cr. 3
Software Testing Techniques
As the size and complexity of software projects have grown, so has
the importance of ensuring program correctness. This course examines
the issues of program testing, validation, and verification. Course
projects require students to construct test data and to analyze the
correctness of several software systems. Prerequisite: C-S 340. Usually
Offered: Spring Semester, Odd Years
C-S 351 Cr. 3
Simulation
Programming computers to play games and imitate activities of
systems such as drive-in facilities, check-out lanes, and computer
operations. Topics include tests of goodness of fit, random
number generators, simulated sampling, queuing theory, analysis
of systems to be simulated, construction and validation of simulation
programs, and interpretation of results. Prerequisites: C-S
220 and MTH 207. Usually Offered: Occasionally
C-S 352 Cr. 3
Computer Graphics and Scientific Visualization
An introduction to the fundamentals of computer graphics and
its application to Scientific Visualization. Topics include
basic imaging algorithms, geometric transformations, hidden
surface algorithms, polygonal rendering, solid modeling, lighting
models, and specialized graphics hardware. Prerequisites: C-S
340 and MTH 207. Usually Offered: Spring Semester, Even Years
C-S 353 Cr. 3
Analysis of Algorithm Complexity
An in-depth analysis of the computational complexity of a wide range
of algorithms for problems of fundamental importance to computer science.
Algorithms to be examined include: sorting, pattern matching and various
graph algorithms. Prerequisites: C-S 340 and MTH 207. Usually Offered:
Fall Semester, Even Years
C-S 364 Cr. 3
Introduction to Database Management Systems
Introduction to the design and organization of database management
systems. Topics include the relational data model, relational algebra,
SQL query language, database software development, data security, normalization,
client/server environments. Prerequisites: C-S 220. Students with credit
in C-S 362 (course now deleted) may not get credit in 364. Usually
Offered: Fall Semester
C-S 370 Cr. 3
Computer Architecture
A presentation of the logical organization of modern digital computers.
Topics include performance evaluation, instruction set design, computer
arithmetic, processor control, pipe-lining, cache memory, memory hierarchy,
memory and system buses, and I/O organization. Prerequisites: C-S 270
and MTH 225. Usually Offered: Fall and Spring Semester
C-S 395 Cr. 1-3
Independent Study
Individualized study of topics in computer science not covered by courses
regularly taught in the department. Prerequisite: written consent of
the instructor and the department chair. Repeatable for credit - maximum
6. Usually Offered: Fall and Spring Semester and Summer Term
C-S 419/519 Cr. 1-3
Topics in Computer Science
A special topics course in Computer Science which will function as
a forum for new ideas and testing ground for new courses. Prerequisite:
Consent of instructor. Repeatable for credit - maximum 6. Usually Offered:
On Demand
C-S 421/521 Cr. 3
Programming Language Concepts
A comparative study of the concepts underlying the design of contemporary
high-level programming languages, including imperative, functional,
logic and object-oriented paradigms; formal representation of syntax
and semantics; control structures; data and procedural abstraction;
scope and extent; parallelism and exception handling. This course cannot
be taken both at the undergraduate level and at the graduate level.
Prerequisite: C-S 340. Usually Offered: Fall and Spring Semester
C-S 431 Cr. 3
Introduction to Robotics
This course is a hands-on introduction to the algorithms and
techniques required to write robot control software. Topics
include the components of mobile robots and robot manipulators,
manipulator kinematics, robot task planning, sensing, sensor
fusion, visual servoing and robot control concepts. Prerequisite:
C-S 340. Usually Offered: Spring Semester, Odd years
C-S 441/541 Cr. 3
Operating System Concepts
The study of the structures and algorithms of operating systems. Operating
systems are viewed as managers and controllers of resources such as
processors, memory, input and output devices and data. Topics include
multiprogramming systems, CPU scheduling, memory management and device
management. Prerequisites: C-S 340 and 370. Usually Offered: Fall and
Spring Semester
C-S 442/542 Cr. 3
Structure of Compilers
An extensive study of all phases of the compilation of high level programming
languages. Topics include: scanning, parsing (LL and LR), semantics
analysis, symbol table organization and manipulation, internal code
generation, storage allocation, optimization and object code generation.
Students are required to complete a compiler for a small high-level
language. Prerequisites: C-S 270 and 340. Usually Offered: Spring Semester
C-S 443/543 Cr. 3
Topics in Operating Systems
An intermediate course in operating systems extending topics introduced
in C-S 441. Operating systems concepts are studied in depth. Typically
students will study and modify an existing system. Prerequisite: C-S
441. Usually Offered: Fall Semester, Even Years
C-S 446/546 Cr. 3
Object-Oriented Software Development
Introduction to the concepts and principles of object-orientation
(OO). Topics include detailed discussion on analysis and design
of OO software systems, notations for OO analysis and design,
and comparison of OO programming languages. Advanced topics
on object-orientation such as OO testing and software reuse
will be briefly discussed. Prerequisites: C-S 340. This course
cannot be taken for credit both at the undergraduate level and
at the graduate level. Usually Offered: Spring Semester
C-S 449/549 Cr. 3
Advances in Software Engineering
Introduces advanced topics in software engineering. Topics include
prototyping models, risk analysis, component-oriented software
development, software architectures, software reuse, software
metrics and quality analysis. Prerequisites: C-S 341. This course
cannot be taken for credit both at the undergraduate level and
at the graduate level. Usually offered: Fall Semester, Even
Years
C-S 451/551 Cr. 3
User Interface Design
This course focuses on the design and implementation of user
interfaces. The topics include characteristics of user interfaces,
user profiles, user interface design principles, methods and
tools for user interface development, evolution of user interfaces,
evaluation of user interfaces, and case studies. Prerequisite:
C-S 340. This course cannot be taken for credit both at the
undergraduate level and at the graduate level. Usually Offered:
Fall Semester, Odd Years
C-S 452/552 Cr. 3
Artificial Intelligence and Pattern Recognition
An introduction to the fundamental principles of artificial intelligence.
Topics include the biological basis for intelligence, classification
of object descriptions and pattern recognition, search strategies and
game trees, natural language processing, automatic theorem proving,
programming for artificial intelligence and knowledge-based systems.
Projects include writing a substantial artificial intelligence application
program. Prerequisite: C-S 340. Usually Offered: Fall Semester, Odd
Years
C-S 453/553 Cr. 3
Introduction to the Theory of Computation
An introduction to the theoretical aspects of computation. The
capabilities and limits of several computation models are considered
including: partial recursive functions, Turing machines, finite
state automata and formal languages. The implications of Church's
thesis and unsolvable problems such as the halting problem are
discussed. Prerequisite: C-S 340. Usually Offered: Spring Semester,
Even Years
C-S 454/554 Cr. 3
Digital Image Processing
This course introduces the fundamentals of digital image processing
techniques with an emphasis on the design and implementation
of image processing algorithms. Topics include: color models,
point-processing techniques, convolution, Fourier domain processing,
the discrete cosine transform, image compression methodologies,
image restoration and enhancement, sampling and image display.
Prerequisite: C-S 340. Usually Offered: Fall Semester, Even
Years
C-S 455/555 Cr. 3
Fundamentals of Information Security
This course presents the fundamental concepts of information
security. Basic policies, techniques and tools for maintaining
the security of host computers, information networks and computer
software are presented. Elementary cryptography is explored
with special attention to applications in data encryption, hashing
and digital signatures. Fundamental security management procedures
are also introduced, as are the legal and ethical issues associated
with computer security. Students will be expected to apply knowledge
gained to construct security policies and practice security
in the form of access privileges, firewalls, vulnerability scanners
and intrusion detection tools. Usually offered: Fall Semester,
Odd Years
C-S 464/564 Cr. 3
Advanced Database Management Systems
Advanced topics in database management systems. Topics include
the relational data model, relational calculus, embedded SQL
programming, database application programming, indexing, systems
software and storage structures for databases, concurrency control,
crash recovery, database administration, parallel and distributed
databases, object oriented databases. This course cannot be
taken for credit both at the undergraduate level and the graduate
level. Prerequisites: C-S 364. Usually Offered: Spring Semester,
Odd Years
C-S 470/570 Cr. 3
Parallel and Distributed Computing
A study of architectures, control software, and applications
for parallel and distributed systems. A survey of parallel and
distributed architectures including data flow machines, vector
processors, shared memory multiprocessors, and message based
multiprocessors. Software topics include process communication
and synchronization, global state maintenance, negotiation,
scheduling, data parallelism, control parallelism, and languages
for parallel and distributed computing. Prerequisite: C-S 370.
Usually Offered: Occasionally
C-S 471/571 Cr. 3
Data Communications
An introduction to data communications, including the electrical
properties and software protocols. In addition to presentations
of the concepts and techniques used for data communications,
several currently used standards and communications networks
will be examined. Prerequisites: C-S 270 and 340. Usually Offered:
Spring Semester, Even Years
C-S/C-I 480/680 Cr. 3
Survey of Computer Assisted Instructional Systems
A survey of current trends in Computer Assisted Instruction (CAI).
Development of instructional and curriculum materials suitable for
computer applications. Use of a current authoring software package.
Prerequisite: C-S 224 or C-I 420/620. (Cross-listed with C-I; may only
earn credit in C-S or C-I.) Usually Offered: On Demand
C-S 499 Cr. 1-3
Research in Computer Science
An opportunity to become acquainted with literature in the field and
to work on a professional level research project within an area of
interest of the computer science faculty. A seminar reviewing the results
of the study will be a requirement for completion of the course. Prerequisite:
consent of computer science staff. Repeatable for credit - maximum
6. Usually Offered: Fall and Spring Semester and Summer Term
C-S 741 Cr. 3
Software Engineering Principles
This course provides a broader outlook of software development
activities, introduces software qualities, introduces various
life cycle models and software development processes, introduce
principles of testing and maintenance activities, and guides
the selection of an appropriate life cycle model and software
development processes for a given application. Usually Offered:
Fall Semester
C-S 742 Cr. 3
Formal Methods in Software Development
This course introduces the need for formal methods in software
development, introduces various formal notations that are used
in software development, introduces the mathematical preliminaries
that are required to understand and to use the formal notations,
and provides hands-on experience with one or two formal notations
along with some case studies. Usually Offered: Spring Semester
C-S 743 Cr. 3
Software Verification and Validation
This course emphasizes the need for verification and validation
processes in software developments, discuses the methods (informal,
formal and semi-formal) and techniques (prototyping and theoretical
proof techniques) that implement verification and validation,
and provides hands-on experience to apply these methods and
techniques to some simple case studies. Automation of verification
and validation methods will be briefly discussed. Topics on
validation will mainly focus on testing. Prerequisite: C-S 741.
Usually Offered: Fall Semester
C-S 744 Cr. 3
Managerial Issues in Software Development
This course addresses management issues that are involved in
software development projects; these issues include group working,
allocation of teams and division of labor, feasibility analysis,
marketing strategies and project deadlines. Other topics include
in-house software development versus outsourcing, customer interaction,
standards and organizational impacts on software development.
Usually Offered: Spring Semester
C-S 750 Cr. 3
Topics in Software Engineering
This is a topics course in Software Engineering. New topics
will be introduced based on the evolution of Software Engineering
research. Some such topics are real-time systems, embedded systems,
software for safety-critical applications, software architectures,
comoonent-oriented programming, CORBA, COM/DCOM, and CASE (Computer-Aided
Software Engineering). Offered: Occasionally
C-S 751 Cr. 3
Seminar in Software Engineering
This course is meant for those who want to speciallize in one or more
areas in Software Engineering such as software reuse, software architectures,
software testing, software verification etc. The workload for the course
will include a number of presentations in the class and one or more
written reports.
C-S 752 Cr. 3
Independent Study
This course is meant for those who want to acquire an in-depth knowledge
on any Software Engineering topic. Typically, the student may be required
to focus on one particular topic and conduct some research on this
topic, or to do some software development activities such as analysis,
design, implementation or testing.
C-S 798 Cr. 12
Software Development Project
This is a 12-credit course involving a major software development
project and requires the development of software for a particular
application. Upon registering for this course, a student should
choose a problem, analyze its feasibility in terms of time limits
and resources, develop the requirements document and design
(architectural and detailed) document, implement the design
and demonstrate the product with appropriate test cases. A project
proposal must be submitted to the Project Evaluation Committee
(PEC) in the Computer Science department for approval before
starting the project. This proposal should include the goals,
project plan, time schedule, resource requirements and other
details pertinent to the project. A student can register for
the project course at any time by submitting the project proposal,
and continue to work on the project thereafter. Depending on
the work done in each term, the student will be given appropriate
number of credits per term (a maximum of 12) as outlined in
the project proposal. PEC is responsible for checking the work
proposed / done in each term and giving the appropriate number
of credits.
At the completion of the project, the student should submit a written
project report that satisfies the requirements stated in A guide for
writing a software development project report (will be available from
the Computer Science department). This report will be evaluated by
PEC. After PEC has read the report (normally within a month after submission),
an oral examination will be conducted. Members of PEC and the project
supervisors/advisors will serve as the examiners for this oral examination.
The student will be given a Pass / Fail grade for the course at the
end of the oral examination.
The project will address a real-world problem and hence will be selected
from a source outside the Computer Science department. The purpose
of this project work is to apply the knowledge gained in the course
work to a real-world problem. The sources for selecting the problem
include other departments (academic and administrative) in the university
and industries. A faculty member in the Computer Science department
and a supervisor in the unit from where the problem is chosen (another
department or industry) will jointly supervise / guide the student.
In the event of not being able to find a suitable project outside the
Computer Science department, the student may seek a project given by
one of the faculty members in the Computer Science department and the
same faculty member will supervise / guide the student. The latter
option provides an opportunity for students to conduct research in
Software Engineering.
|