Table of contents
# General Programming Courses
# 230 Elementary Data Structures and Algorithms
Advanced syntax of high level language taught in CSC 130. Emphasis on modularization and abstraction. Big-O analysis of algorithms. Design and use of abstract data types with various implementations.
# Math-Based Courses
# 250 Foundations of Computer Science I
An introduction to the fundamental ideas underlying contemporary computer science with a focus on the computation and construction of objects.
These classes are designed to teach specific hardware concepts
# 261 Computer Organization and Assembly Language
CPU, memory, I/O devices, digital logic design, psw. Number representations and machine language. Assembly language instruction types, registers, addressing, arithmetic, instruction format, opcodes, pseudo-opcodes, assembler directives, system calls, and macros.
- JSAssembly - an interpeter for x86 assembly codes
- JSNES - Great working interpreter for SNES ROM images
- 6502asm - 6502 assembly code interpreter
I did not find any online SPARC interpreters, as UNCG teaches this course in SPARC assembly, but it would be trivial to modify one of the above to suit.
# Outside the Browser
These courses are designed to teach specific software, and
# 330 Advanced Data Structures
Static and dynamic data structures emphasizing binary trees and graphs. Advanced programming techniques. Advanced sorting and searching algorithms. Hashing techniques. Performance analysis. Methods of developing large applications programs.
# 339 Concepts of Programming Languages
Concepts of block-structured, object-oriented, functional, logic, and concurrent programming languages. Comparative study of syntactic and semantic features of these languages and writing programs using them.
# 340 Software Engineering
Practical and theoretical concepts of software engineering.
# 350 Foundations of Computer Science II
High level concepts in the theoretical foundations of computer science.
# 463 Basic Systems Administration Laboratory
Installing operating systems, peripherals, hardware, and software. Backups, recompiling the kernel (loading/unloading modules), providing Web services, and user administration. (Formerly CSC 563)
# 464 Intermediate Systems Administration Laboratory
Topics selected from routing, firewall, Primary Domain Controller, Backup Domain Controller, Domain Controller trust, SAMBA, DNS round robin, and PPP connectivity setup. (Formerly CSC 564)
# 465 Advanced Systems Administration Laboratory
Automated installation, software installation, systems programming, system administration in a large organization. Projects will include departmental or university computer system work. (Formerly CSC 565)
# 471 Principles of Database Systems
Contemporary database systems. Emphasis on query processing, design, and implementation of applications in relational (SQL) databases. Introduction to other database models such as XML, object-oriented, and deductive.
# 490 Senior Project
Application of classroom knowledge and skills in computer science to solve real-world problems and to develop research and development skills.
# 493 Honors Work in Computer Science
Research in a topic of special interest at the Honors level.
# 495 Selected Topics in Computer Science
May be repeated for credit for a total of 6 s.h. when topic of study changes. A topic of special interest is studied in depth.
# 521 Computer Graphics
Survey of graphics algorithms, data structures, and techniques.
# 522 Digital Image Processing
Image representation, enhancement, compression, coding, restoration, and wavelet transforms.
# 523 Numerical Analysis and Computing
Number systems and errors, solutions of non-linear and linear systems, eigenvalue problems, interpolation and approximation, numerical differentiation and integration, solution of differential equations.
# 524 Numerical Analysis and Computing
Continuation of 523 with special topics in numerical analysis, emphasis on applied mathematics.
# 526 Bioinformatics
Introduction to the problems and methods in Bioinformatics. Problem areas include restriction mapping, map assembly, sequencing, DNA arrays, and sequence comparison.
# 529 Artificial Intelligence
Logical foundations, knowledge representation and reasoning, search, and selected topics such as natural language processing and reasoning under uncertainty.
# 539 Introduction to Compiler Design
Basic techniques of compiler design and implementation: lexical analysis, parsing, code generation. Sizable programming project implementing a compiler for a block-structured language with strong typing.
# 540 Human-Computer Interface Development
Survey of concepts and techniques for human-computer interface development. Topics include user-centered design, user interface programming, and usability evaluation.
# 550 Combinatorics on Words
Introduction to the problems and methods in algorithmic combinatorics on words. Problem areas include periodicity, primitivity, and borderedness.
# 553 Theory of Computation
Finite state automata and regular expressions, context-free grammars, push-down automata and their use in parsing, overview of language translation systems, models for programming language semantics, computability and undecidability.
# 555 Algorithm Analysis and Design
Sequential algorithm design and complexity analysis. Dynamic programming. Greedy algorithms. Graph algorithms. Selected advanced topics from NP-completeness; approximation, randomized, parallel, number-theoretic algorithms; Fast Fourier Transform; computational geometry; string matching.
# 561 Principles of Computer Architecture
Hardware and software components of computer systems, their organization and operations. Topics: comparative instruction set architectures, microprogramming, memory management, processor management, I/O, interrupts, and emulation of processors.
# 562 Principles of Operating Systems
Techniques and strategies used in operating system design and implementation: managing processes, input/output, memory, scheduling, file systems, and protection.
# 567 Principles of Computer Networks
Hardware and software components of computer networks, their organization and operations. Topics: open system interconnection; local area networks; TCP/IP internetworking, routing, and packet switching; network programming.
# 568 Principles of Wireless Networks
Digitial communications, Communication networks, wireless communication technology, wireless networking, wireless LANs and wireless network programming.
# 580 Cryptography and Security in Computing
Modern development of cryptography and secure encryption protocols. Program security and viruses. Operating system protection. Network and distributed system security. Database security. Administering security.
# 583 Firewall Architecture and Computer Security
Firewall hardware and software technologies. Architectures, protocols and their applications.