Old Dominion University
A to Z Index   |   Directories

College of Sciences


Computer Science


Resources

Department Of Computer Science

Undergraduate Course Descriptions

CS 101. Computers: An Introduction.

    Lecture 3 hours, recitation 1 hour; 3 credits.
    Laboratory work required.
    An introductory course about computers and how they work. Students need no prior experience with computers. Students will receive instruction and hands-on experience with operating system, word processing, electronic spreadsheet, graphic presentation, and other software available in the university computer labs.

CS 102 Introduction to Networks and the Internet

    Lecture 3 hours; Recitation 1 hour; 3 credits
    Laboratory work required
    Introduction to networked computer systems that have access to the Internet with its vast information. Emphasis on a computer network's architecture, the University's network, electronic mail, World Wide Web, WWW browsers, and gaining access to information that resides on computer systems throughout the world. Knowledge of how to effectively use the Internet and the understanding of how and why it works are critical elements.
CS 106 Intermediate Wordprocessing
    Lecture 1 hour; 1 credit
    Intermediate coverage of wordprocessing to produce professional quality documents and reports. Computer-based training and a project-based approach teach students to solve the realistic problems of organization, formatting and display as they practice and learn the features of MicrosoftWord.
CS 107 Intermediate Spreadsheets
    Lecture 1 hour; 1 credit
    An introduction to data management and analysis using spreadsheets. No prior computer experience required. Computer-based training using a project-based approach teaches students to solve realistic problems as they practice and learn the features in Microsoft Excel.
CS 108 Intermediate Presentation S/W
    Lecture 1 hour; 1 credit
    An intermediate course in utilizing presentation software to produce quality slideshows. Computer-based approach teaches students to solve realistic problems as they practice and learn the features of Microsoft PowerPoint.
CS 120G Introduction to Information Literacy and Research
    Lecture 3 hours; Recitation 1 hour; 3 credits.
    Laboratory work required.
    Students will learn to locate, manage, critically evaluate and use information for problem solving, research and decision making. Includes collaborative tools for document development and office productivity tools for presentation. Information security, laws and etiquette related to use and access of information are covered.
CS 121G Introduction to Information Literacy and Research for Scientists
    Lecture 3 hours; Recitation 1 hour; 3 credits.
    Laboratory work required.
    Students will learn to locate, manage, critically evaluate and use information for scientific problem solving and research. Includes mathematical tools for data analysis and presentation and office and collaborative tools, as well. Information security, laws and etiquette related to use and access of information are covered.
CS 126G, Honors, Introduction to Information Literacy and Research
    Lecture 3 hours; Recitation 1 hour; 3 credits.
    Laboratory work required.
    Open only to students in the Honors College. A special honors version of CS 120G.
CS 133 Introduction to Programming in Java

    Lecture 3 hours; Labratory 2.5 hours; 4 credits
    Prerequisites: MATH 102M or MATH 103M.
    Laboratory work required
    Introduction to computer-based problem solving and programming in Java. Topics include problem solving methodologies, program design, algorithm development, and testing. Java language concepts include variables, data types and expressions, assignment, control-flow statements, functions, arrays, and classes. Algorithms covered include sorting, searching, and linked list manipulations.
CS 150 Problem Solving and Programming I
    Lecture 3 hours; Laboratory 2.5 hours; 4 credits
    Prerequisites: MATH 102M or MATH 103M or equivalent.
    Laboratory work required.
    Introduction to computer-based problem solving and programming in C++. Topics include problem solving methodologies, program design, algorithm development, and testing. C++ language concepts include variables, data types and expressions, assignment, control-flow statements, functions, arrays, pointers, structs, and classes.
CS 170 Computer Organization and Architecture I
    Lecture 3 hours; 3 credits
    Prerequisites: MATH 102M or MATH 103M and a grade of C or better in CS 150.
    Fundamentals of the architecture and operation of modern computers. Basic computer logic: logic equations; gates; combinatorial logic. Basic computer arithmetic: binary numbers; floating point representation. System hierarchy, overview of a computer; integrated circuit technology. Performance: metrics; choosing benchmarks; Amdahl's law. Instruction Sets and Operations: assembly language; machine language; examples of other instruction sets.
CS 250 Problem Solving and Programming II
    Lecture 3 hours; Laboratory 2.5 hours; 4 credits
    Prerequisites: MATH 162M and a grade of C or better in CS 148 or 150.
    Corequisite: CS 252
    Laboratory work required.
    Design issues arising in software systems and C++ programming techniques aiding in their solution. Topics include the software life cycle, methods of functional decomposition, design documentation, abstract data types and classes, common data structures, dynamic data structures, algorithmic patterns, and testing and debugging techniques. Term project required.
CS 252 Introduction to Unix for Programmers
    Lecture 1 hour; 1 credit
    Prerequisites: A grade of C or better in CS 150
    Available for pass/fail grading only.
    An introduction to Unix with emphasis on the skills necessary to be a productive programmer in Unix, Linux, and related environments. Topics include command line shells, files and directories, editing, compiling and common command line utilities.
CS 270 Introduction to Computer Architecture II
    Lecture 3 hours; 3 credits
    Prerequisites: A grade of C or better in CS 150 and 170
    Fundamentals of the architecture and operation of modern computers. Building an ALU. The cache-Ram interaction. The virtual memory system. The Fetch/Execute cycle. Implementing a set of the ALU, Load/Store and Branch instructions in a single cycle implementation. Basics of microprogramming. Design of the control unit. A pipelined implementation. Multicores, multiprocessors and clusters.
CS 295 Topics in Computer Science.
    1-3 credits
    Special topics in computer science which are not part of the current curriculum at the freshman/sophomore level.

CS 300T Computers in Society

    Lecture 3 hours; 3 credits
    Prerequisites: ENGL 110C
    Covers changes in the world's society due to continuing implementation of computing technologies. Evaluation of technological expansions in areas of governments, business/industry, education, medicine, transportation, communication and entertainment. Topics include: intellectual property, software piracy, computer crimes and ethics. Students must research a societal topic and present in written and oral forms.
CS 312 Internet Concepts
    Lecture 3 hours; 3 credits
    Prerequisites: CS 252
    Laboratory work required.
    An in-depth introduction to the Internet and the World Wide Web for CS or similar majors as a basis for more advanced studies in Web programming. Topics include: historical and current development of the Internet Web document publishing. Internet design, communication, and application protocols and the tools that use them. Internet search tools and their design. Internet issues such as netiquette, copyright, spam, computer viruses, cookies, security, and future of the Internet.
CS 330 Object Oriented Programming and Design
    Lecture 3 hours; 3 credits
    Prerequisites: Math 163, CS 252, and a grade of C or better in either CS 250 or CS 333
    Laboratory work required.
    The techniques and idioms of object-oriented programming in C++ and Java. Methods of object-oriented analysis and design with the Unified Modeling Language. Multi-thread programs and synchronization.
CS 333 Programming and Problem Solving in C++
    Lecture 4 hours; 4 credits
    Prerequisites: CS 150 (or the equivalent course in high level language) and MATH 163
    Corequisites: CS 252 Laboratory work required.
    Topics include C++ syntax and semantics, principles of design and basic software engineering skills. This course satisfies the requirements of both CS 150 and 250. It is intended for the student who has already been introduced to programming, possibly in another language. This web-based course requires considerable maturity and independent responsibility on the part of the student.
CS 334 Computer Architecture Fundamentals
    Lecture 4 hours; 4 credits
    Prerequisites: CS 150 (or an equivalent course in a high level language) and MATH 163
    Topics include: number representation, base conversion, Boolean algebra, combinatorial circuits, arithmetic units, registers, memory, hardwired and microprogrammed control units, architecture of typical microcomputers, and the development of systems from basic components. The performance of competing architectures will be a major concern. This course satisfies the requirements of both CS 170 and 270. This web-based course requires considerable maturity and independent responsibility on the part of the student.
CS 350 Introduction to Software Engineering
    Lecture 3 hours; 3 credits
    Prerequisite: a grade of C or better in CS 330 or CS 361
    Laboratory work required.
    Topics include: use of a defined software process (such as PSP), software costing methods, software metrics, quality assurance, inspection teams, testing methodologies, schedules and budgets, and configuration management. The course requires each student to participate as a member of a team in a significant team project. Each student will be required to demonstrate proficiency in several software development tools.
CS 355 Principles of Programming Languages
    Lecture 3 hours; 3 credits.
    Prerequisites: a grade of C or better in CS 250 and 252.
    Laboratory work required.
    Survey of significant features of programming languages. Language types including imperative, functional, logical, and object-oriented are covered. Concepts include lexical and syntactic analysis, type systems, flow control, modularity, and parallel programming. Small programs in several languages required.
CS 361 Advanced Data Structures and Algorithms
    Lecture 3 hours; 3 credits.
    Prerequisites: Math 163, CS 252, and a grade of C or better in either CS 250 or CS 333.
    Laboratory work required.
    Common abstract data types, including vectors, lists, stacks, queues, sets, maps, heaps, and graphs. Standard C++ interfaces for these ADTs. Generic programming via iterators and templates. Choosing data structures and algorithms to implement ADTs, via analysis of their time and space complexity.
CS 367 Cooperative Education
    1-3 credits.
    Prerequisite: Approval by the CS Department and Career Management in accordance with the policy for granting credit for Cooperative Education programs.
    Available for pass/fall grading only.
    Student participation for credit based on the academic relevance of the work experience, criteria, and evaluative procedures as formally determined by the department and Career Management prior to the semester in which the work experience is to take place. Written report required. (qualifies as a CAP experience)
CS 368 Computer Science Internship
    3 credits.
    Prerequisites: Approval by the CS Department and Career Management.
    Available for pass/fall grading only.
    Academic requirements will be established by the department and will vary with the amount of credit desired. Allows students to gain short duration career-related experience. An academic project may be required by the department to enhance the value of the educational experience. Written report required. (qualifies as a CAP experience)
CS 381 Introduction to Discrete Structures
    Lecture 3 hours; Recitation 1 hour: 3 credits
    Prerequisites: MATH 163 and a grade of C or better in CS 150
    Topics include propositional and predicate logic, rules of inference, methods of proof, set operations, functions, complexity of algorithms, growth of functions, induction, counting, relations, equivalence relations and graphs. Prerequisites: MATH 163 and a grade of C or better in CS 150 or CS 333.
CS 382 Introduction to JAVA
    Lecture, 1 hour; 1 credit.
    Prerequisites: A grade of C or better in CS 250 or CS 333.
    Laboratory work required.
    An introduction to the Java programming language for students who are familiar with programming in C++. Topics include basic language syntax, data structures, control flow, classes, exception handling, and basic elements of the Java API. This web-based class requires independent responsibility and online communication skills on the part of the student.
CS 390 Introduction to Theoretical Computer Science
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 250 and CS 381
    Elementary study of theoretical aspects of computer science. Topics in formal languages and automata theory are covered including regular languages, regular expressions, finite automata, context-free languages, pushdown automata, grammars, Turing machines, and unsolvable problems.
CS 395 Topics in Computer Science
    1-3 credits
    Prequistie: permission of the instructor.

CS 410 Professional Workforce Development I
    Lecture 3 hours; Recitation 1 hour: 3 credits
    Prerequisites: a grade of C or better in CS 300 and CS 350
    Laboratory work required
    Provides students with challenges of business environments in developing a technology based project. Students identify a societal problem, identify solutions, define project solutions, develop project objectives, conduct feasibility analysis, establish organizational group structure to meet project objectives and develop formal specifications. Students make formal technical project presentations and develop web documentation. Students prepare a draft grant proposal.
CS 411W Professional Workforce Development II
    Lecture 3 hours; 3 credits
    Prerequisite: a grade C or better in CS 410 and CS 330
    Laboratory work required.
    Students write professional and non-technical documents and continue the development of the project defined in CS 410. Written work is reviewed and returned for corrective rewriting. Students will design and develop a project prototype, and demonstrate the prototype to a formal panel along with delivering the formal product specifications and a draft formal grant proposal. (qualifies as a CAP experience) (This is a writing intensive course.)
CS 417 Computational Methods and Software
    Lectures 3 hours; 3 credits
    Prerequisites: MATH 316 and a grade of C or better in CS 250 or CS 333
    Laboratory work required.
    Algorithms and software for fundamental problems in scientific computing. Topics: properties of floating point arithmetic, linear systems of equations, matrix factorizations, stability of algorithms, conditioning of problems, least-squares problems, eigenvalue computations, numerical integration and differentiation, nonlinear equations, iterative solution of linear systems.
CS 418 Web Programming
    Lectures 3 hours; 3 credits
    Prerequisites: A grade of C or better in CS 312 and CS 330
    Laboratory work required.
    Overview of Internet and World Wide Web; web servers and security, HTTP protocol; web application and design; server side scripts and database integration, and programming for the Web.
CS 431 Web Server Design
    Lectures 3 hours; 3 credits
    Prerequisites: Familiarity with Internet and network (including socket) programming.
    Laboratory work required.
    Extensive coverage of the hypertext transfer protocol (HTTP), specifications and commentary (IETF RFCs), and implications for servers and clients. Students will develop a web server providing common HTTP functionality and implementing all HTTP (including unsafe and conditional) methods, content negotiation, transfer and content encoding, basic & digest authentication, and server-side execution of programs (i.e., dynamic resources). Frequent in-class demonstrations of progress and protocol conformance will be required. Prerequisites: CS 150, familiarity with Internet and network (including socket) programming.
CS 441 App Development for Smart Devices
    Lectures 3 hours; 3 credits
    Prerequisites: CS 330 or CS 382
    Laboratory work required.
    Project-oriented coverage of the principles of application design and development for Android platform smart devices. Topics include user interface; input methods; data handling; network techniques; localization and sensing. Students are required to produce a professional-quality mobile application.
CS 450 Database Concepts
    Lectures 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 381 and either of CS 330 or CS 361
    Laboratory work required.
    Database Architecture. The relational model and relational algebra. Interactive SQL, SQL and programming languages (PL/SQL and PHP). Entity Relationship Modeling. Functional dependencies and normalization. Transactions, concurrency and recovery.
CS 451 Software Engineering Survey
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 330 or CS 361
    Laboratory work required.
    Evaluation of software development methodologies. Topics include: software life cycle models, software specification and design methodologies, informal specification techniques, formal specifications, design tools, software analysis, quality assurance, life cycle management, software costing models and complexity.
CS 454 Network Management
    Lecture 3 hours; 3 credits
    Prerequisite: a grade of C or better in CS 455
    Laboratory work required.
    The administration of computer networks and their interaction with wide area networks: network topologies for local and wide area networks, common protocols and services, management of distributed file services, routing and configuration, security, monitoring and trouble-shooting.
CS 455 Introduction to Networks and Communications
    Lecture 3 hours; 3 credits
    Prerequisites: CS 250 or CS 333, CS 252, CS 270.
    Laboratory work required.
    Internet and the 5-layered protocol architecture for the Internet, applications built on top of data networks, specifically the Internet, the web, the transport layer, TCP and UDP protocols, the network layer, the data link layer, also some of the technologies for the physical layer.
CS 456 Database Administration I
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 381 and either CS 330 or 361.
    Laboratory work required.
    Programming in SQL and PL/SQL and hands-on development of DBA administration skills in the ORACLE database environment. Creating database objects, querying and manipulating, and PL/SQL programming constructs. Setup and administer databases. Create, organize, and manage database files, users, privileges and other resources.
CS 457 Database Administration II
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 456/556
    Laboratory work required.
    Advanced DBA administration skills in the Oracle database environment. Topics in planning and implementing backup and recovery of the database. Performance optimization and tuning of database and applications including memory and disk structures. Configuration and maintenance of clients and servers in a network environment.
CS 458 Unix System Administration
    Lecture 3 hours; 3 credits
    Prerequisite: Experience with UNIX
    Laboratory work required.
    Aspects of administering a SOLARIS/UNIX operating system in a networked environment are covered. Topics covered include installation, file system management, backup procedures, process control, user administration, device management, Network File Systems (NFS), Network Information Systems (NIS), UNIX security, Domain Name Services (DNS), and integration with other operating systems.
CS 460 Computer Graphics
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 361
    Laboratory work required.
    An introduction to graphical systems and methods. Topics include basic primitives, windowing, transformations, hardware, interaction devices, 3-D graphics, curved surfaces, solids, and realism techniques such as visible surface, lighting, shadows, and surface detail. Requires project involving OpenGL programming.
CS 462 Cybersecurity Fundamentals
    Lecture 3 hours; 3 credits
    Prerequisites: CS 270
    Introduction to networking and the Internet protocol stack; Vulnerable protocols such as HTTP, DNS, and BGP; Overview of wireless communications, vulnerabilities, and security protocols; Introduction to cryptography; Discussion of cyber threats and defenses; Firewalls and IDS/IPS; Kerberos; Transport Layer Security, including certificates; Network Layer Security.
CS 463 Cryptography for Cybersecurity
    Lecture 3 hours; 3 credits
    Prerequisites: CS 270
    Mathematical foundations including information theory, number theory, factoring, and prime number generation; Cryptographic protocols including basic building blocks and protocols; Cryptographic techniques including key generation and key management, and applications; Cryptographic algorithms--DES, AES, Stream Ciphers, Hash functions, digital signatures, etc.
CS 464 Networked Systems Security
    Lecture 3 hours; 3 credits
    Prerequisite: CS 463 or CS 563.
    Authentication in cyber systems including password-based, address-based, biometrics-based, and SSO systems; Authorization and accounting in cyber systems; Securing wired and wireless networks; Secured applications including secure e-mail services, secure web services, and secure e-commerce applications; Security and privacy in cloud environments.
CS 465 Information Assurance
    Lecture 3 hours; 3 credits
    Prerequisites: CS 462 or familiarity with computer security area.
    Introduction to information assurance. Metrics, planning and deployment; identity and trust technologies; verification and evaluation, incident response; human factors; regulation, policy languages, and enforcement; legal, ethical, and social implications; privacy and security trade-offs; system survivability; intrusion detection; fault and security management.
CS 471 Operating Systems
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 270 and CS 361
    Laboratory work required.
    Operating system structures. Multiprogramming and multiprocessing. Process management. Memory and other resource management. Storage management, I/O systems, distributed systems. Protection and security. The concepts will be illustrated through example systems such as Unix and Windows.
CS 472 Network and Systems Security
    Lecture 3 hours; 3 credits
    Prerequisite: a grade of C or better in CS 361
    Laboratory work required.
    Basic protocols, techniques and programming issues to secure network and computer systems. Topics include: cryptographic algorithms and concepts (Secret Key Cryptography, Hashes and Message Digests, Public Key and Authentication); Security Standards (Kerberos, Public Key Infrastructure, IPsec, SSL/TLS); Security applications (PEM, S/MIME, PGP, HTTP, Firewalls); Hands-on programming using OpenSSL.
CS 475 Introduction to Computer Simulation
    Lecture 3 hours; 3 credits
    Prerequisites: STAT 330 and a grade of C or better in either of CS 330 or CS 361
    Laboratory work required.
    Efficient implementation methods. Time management. Planning and design of simulation experiments. Statistical issues in simulation. Generation of random numbers and stochastic variates. Programming with graphically- and text-based simulation languages. Verification and validation of simulation models. Distributed simulation. Special topics such as HLA will be discussed.
CS 476 Systems Programming
    Lecture 3 hours; 3 credits
    Prerequisite: a grade of C or better in CS 330 and CS 361
    Laboratory work required.
    This course is to help students fully understand and utilize the internal workings and capabilities provided by modern computing, networking and programming environments. Topics include: Shell Script Programming, X Windows (Xlib and Motif), UNIX internals (I/O, Processes, Threads, IPC and Signals), Network Programming (UDP/TCP Sockets and Multicasting) and Java Systems Programming (SWING, Multithreading and Networking).
CS 478. Computational Geometry, Methods and Applications.
    Lecture 3 hours; 3 credits
    Prerequisites: CS 361 and MATH 211.
    The discipline of Computational Geometry is devoted to the study of algorithms which are formulated in terms of spatially embedded arrangements of objects, such as points, lines, surfaces, and solids. This course covers fundamental algorithms including convex hulls, polygon triangulations, point location, Voronoi diagrams, Delaunaytriangulations, binary space partitions, quadtrees, and other topics.
CS 480 Introduction to Artificial Intelligence
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 361
    Laboratory work required.
    Introduction to concepts, principles, challenges, and research in major areas of AI. Areas of discussion include: natural language and vision processing, machine learning, machine logic and reasoning, robotics, expert and mundane systems.
CS 486 Introduction to Parallel Computing
    Lecture 3 hours; 3 credits
    Prerequisites: MATH 316 ; Knowledge of a high level language
    Laboratory work required.
    The motivation for and successes of parallel computing. A taxonomy of commercially available parallel computers. Strategies for parallel decompositions. Parallel performance metrics. Parallel algorithms and their relation to corresponding serial algorithms. Numerous examples from scientific computing, mainly in linear algebra and differential equations. Implementations using public-domain network libraries on workstation clusters and computers.
CS 487 Applied Parallel Computing
    Lecture 3 hours; 3 credits
    Prerequisites: a grade of C or better in CS 270 and either CS 361 or CS 330. (CS 417 or Linear Algebra is recommended)
    Laboratory work required.
    Fundamental concepts of parallel computing: Machine models, architectures, parallel topologies and languages, parallel algorithm design and parallel programming, architecture independent message passing interface (MPI) communication library, and scaled-speedup. Group project required.
CS 488 Principles of Compiler Construction
    Lecture 3 hours; 3 credits
    Prerequisite: a grade of C or better in CS 361
    Laboratory work required.
    Theoretical and practical aspects of compiler design and implementation. Topics will include lexical analysis, parsing, translation, code generation, optimization, and error handling.
CS 495 Topics in Computer Science
    1-3 credits.
    Prerequisite: permission of the instructor.
CS 497 Independent Study in Computer Science
    1-3 credits.
    Prerequisite: permission of the instructor.
    Independent study under the direction of an instructor.