♦ | 20-CS-110: Introduction to Computer Science | |||||||||||||||||||||||||||||||||

Introduction to various aspects of the computing discipline including:
critical analytical skills and underlying ideas; survey of some core
areas of CS; introduction to the computing environment using MATLAB; and
information about the profession, prospects, and general academic
skills. Enrollment limited to CS majors. BoK: NA. Credit Level: U. Credit Hrs: 3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-112: Fundamentals of Programming | |||||||||||||||||||||||||||||||||

Top-down program design; break problems into functions and identify
needed control structures; declare and employ basic MATLAB data types
particularly numbers, strings, 1-dimensional arrays and symbolic
variables; create and use functions. BoK: QR. Credit Level: U. Credit Hrs: 3.00 20CS121 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-122: Computer Science II | |||||||||||||||||||||||||||||||||

Introduction to classes and objects, multi-dimensional arrays, stacks and
queues, and abstract data types. Students who successfully complete the
course should be fluent in the C++ programming language and be able to apply
basic, general programming principles. BoK: QR. Credit Level: U. Credit Hrs: 3.00 Prereq: 20CS121 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-228: Data Structures | |||||||||||||||||||||||||||||||||

Organization of data for faster, more maintainable solutions to common
programming problems such as sorting, searching, and optimization
problems. Focus is on a few fundamental structures and alternative
machine representations such as lists, stacks, queues, trees, graphs,
linked lists, heaps, and arrays. The advantages of data abstraction
are described and illustrated. Algorithms based on the above topics
are developed for some specific problems. Some tools of analysis are
presented to provide the student with a rudimentary means of comparing
alternative algorithms. Prereq: 20-CS-122. BoK: QR. Credit Level: U. Credit Hrs: 3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-4003: Organization of Programming Languages | |||||||||||||||||||||||||||||||||

Covers various significant concepts and features in the design and
implementation of modern programming languages. Topics include various
parameter passing mechanisms, dynamic and static scope rules, dynamic
and static binding of subprogram names to subprogram bodies, dynamic
and static data typing, eager and lazy expression evaluation,
procedural and non-procedural languages, garbage collection and memory
management, type safety, compilation and interpretation. Languages
under consideration are Scheme, Haskell, and Java (Java supports
declarative style so languages like Prolog need not be covered
specifically). Students will describe problem requirements in
terms of formal logic. Prereq: 20-CS-323. BoK: QR. Credit Level: U. Credit Hrs: 3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-4029: Operating Systems | |||||||||||||||||||||||||||||||||

This courses covers the function, design, and integration of the parts
of an operating system. The course begins with an introduction to all
the important concepts associated with an operating system including
process control, I/O, resource allocation, files, virtual memory,
memory, deadlock, access control and mutual exclusion. The second
phase of the course looks at all aspects of processes: state,
hierachies, threads, memory management, process scheduling,
synchronization, processor co-operation, and semaphores. The next
phase considers some problems that come up in OS design such as
deadlock, livelock, starvation and ways to prevent these problems or
deal with them. The fourth phase treats memory management and storage
allocation, including virtual memory. The fifth phase considers I/O
including device controllers, device drivers, memory mapped I/O, DMA,
and character I/O. The course ends with file organization,
descriptors, and structures.
Students will manipulate the linux kernel using C code and observe the effects
and consequences. Students will also do system level programming in the bash
shell. |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-472: Analysis of Algorithms II | |||||||||||||||||||||||||||||||||

Further introduction to the study of algorithms. Analysis of computing time,
asymptotic notation and generating functions. Strategies for designing
algorithms: Divide-and-conquer, Greedy method, Backtracking, etc. Further
topics such as techniques for algebraic manipulations, lower and upper bound
theory, NP-Complete problems, and parallel algorithms. Prereq: 20-CS-471. BoK: QR. Credit Level: U. Credit Hrs: 3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-6026: Formal Methods | |||||||||||||||||||||||||||||||||

An introduction to formal hardware and software verification. Two
approaches are introduced: model checking and logical inference.
Tools and representations based on these techniques are applied to
specific formal verification problems. Tools discussed are: SAT
solvers, SMT solvers, ACL2, ABC, and Cryptol. Representations
discussed are CNF propositional formulas, first order logic,
and and-inverter graphs. Examples of problems verified range from
sorting algorithms such as mergesort to encryption algorithms such as
AES. Prereq: 20-CS-229, 15-MATH-253. BoK: QR. Credit Level: U, G. Credit Hrs: 3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-6053 / 20-CS-5153: Network Security | |||||||||||||||||||||||||||||||||

Current concerns, trends, and techniques to insure security and safety
of data on computers and over networks. Protocols and systems are
discussed with respect to authentication, integrity, and
confidentiality. Secret key (DES, AES, IDEA), and public key systems
(Diffie-Hellman, RSA, DSS), block (CBC) and stream (OFB) ciphers, and
ciphers based on hash algorithms (SHA) are introduced. The
mathematics of these are briefly described. Complex systems based on
the above such as Kerberos, IPSEC, PGP, Email, SSH, SSL, PKI,
Certification Authorities, and Key Distribution Centers are
introduced. A final project provides hands-on understanding of all
the abovem topics. BoK: QR. Credit Level: U, G. Credit Hrs: 3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-6055 / 20-CS-5155: Cyber Defense Overview | |||||||||||||||||||||||||||||||||

Hands-on treatment of techniques for hardening computer systems and
components against attacks, principally via the internet, and for controlling
damage and possibly launching countermeasures in case of attack. Specifically,
the following are considered:
BoK: QR. Credit Level: Graduate/Undergraduate Credit Hrs: 3.00/3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-6056 / 20-CS-5156: Security Vulnerability Assessment | |||||||||||||||||||||||||||||||||

Evaluation of systems and protocols to determine whether they are vulnerable
to known attack vectors such as Return Oriented Programming, buffer overflow,
exploitation of misconfigured systems, viruses, worms, side-channel attacks
and others. Credit Level: Graduate/Undergraduate. Credit Hrs: 3.00/3.00 |
||||||||||||||||||||||||||||||||||

♦ | 20-CS-694: Advanced Programming Techniques | |||||||||||||||||||||||||||||||||

Treats programming concepts, especially those needed for upcoming
internet, security, graphics, and stream applications. Topics include:
exception handlers, control abstractions and applications to streams,
co-routines, demand-driven computation, interfaces substitution for
multiple inheritance, content handlers, protocol handlers,
applications of public key cryptosystem, clients and servers, remote
method invocation, uniform data base interfaces, and reflection. Prereq: 20-CS-403, 20-EECE-429. Credit Level: Graduate/Undergraduate Credit Hrs: 3.00/3.00 (not scheduled) |

ABET
| ||

♦ | Vita: 2010 | |

♦ | C653: course | |

♦ | C694: course | |

C694: outcomes, 2005 | ||

♦ | C122: course | |

C122: assessment, 2005 | ||

♦ | C112: assessment, 2009 | |

♦ | C110: assessment, 2008 | |

♦ | Instructions: as of Oct, 2010 |