[ skip to content ]

Old Dominion University

2013-2014 Catalog

Computer Science

Desh Ranjan, Chair

Janet Brunelle, Chief Departmental Advisor

The Department of Computer Science (CS) offers programs leading to the Bachelor of Science in Computer Science, Master of Science with a major in computer science, and Doctor of Philosophy with a major in computer science. A five-year accelerated option is available that leads to a Bachelor of Science in Computer Science and a Master of Science with a major in computer science.

At the undergraduate level the Department of Computer Science jointly offers a program with the Department of Electrical and Computer Engineering in the College of Engineering and Technology leading to a Bachelor of Science in Computer Engineering. A five-year accelerated option is available that leads to Bachelor of Science in Computer Science and Master of Business Administration degrees. The CS department also supports the computer technology emphasis of the Engineering Technology bachelor's degree.

Computer science traces its foundation to mathematics, logic and engineering. Students in this program are exposed to the broad theoretical and practical basis of computer science in lectures and laboratory experiences. Through laboratories, students are introduced to both the experimental and the design aspects of computer science.

The CS Department has a unique curricular model that applies computer science education to the real world. The Professional Workforce Development courses (CS 410 and CS 411W) expand upon the experimental and design approach of typical computer science curricula by addressing the creativity and productivity required for business and industrial applications today. Students in CS 410 and CS 411W engage in projects that investigate each stage of transforming a creative idea into an innovative product. In addition, the CS Department offers a set of professional development tracks: database administration and network design and administration. These tracks provide a basis for students to pursue career paths and the foundation for professional certification in these areas. Alternatively, students may choose their electives to obtain an emphasis in databases, networks, web programming, or systems programming.

Bachelor of Science in Computer Science

Curriculum Requirement

The Bachelor of Science in Computer Science requires the successful completion of a minimum of 120 semester credit hours of approved course work. At least 30 credit hours overall and 12 credit hours in upper-level courses in the major program must be completed at Old Dominion University. In order to gain appropriate exposure and competency in basic computer science theory and applications, students must satisfy the General Education requirements and the following departmental requirements.

Requirements

Lower-Division General Education

Skills
Written Communication *6
English Composition
   and Introduction to Technical Writing (preferred)
Mathematical Skills (satisfied in the major)
Oral Communication3
Public Speaking (preferred)
Information Literacy and Research3
Introduction to Information Literacy and Research for Scientists (preferred)
Language and Culture (competence must be at the 102 level)0-6
Ways of Knowing
Human Creativity3
Literature3
The Nature of Science **8
Human Behavior3
Interpreting the Past3
Philosophy and Ethics3
Impact of Technology (satisfied in the major by CS 300T)
Total Hours35-41

*

 Grade of C or better required in both courses

**

 Computer Science majors must complete two Nature of Science courses in sequence from the following:

 

BIOL 115N
  & BIOL 116N
General Biology I
   and General Biology II
8
CHEM 105N
  & CHEM 106N
Introductory Chemistry
   and Introductory Chemistry Laboratory
4
CHEM 107N
  & CHEM 108N
Introductory Organic and Biochemistry
   and Introductory Organic and Biochemistry Laboratory
4
CHEM 121N
  & CHEM 122N
Foundations of Chemistry I Lecture
   and Foundations of Chemistry I Laboratory
4
CHEM 123N
  & CHEM 124N
Foundations of Chemistry II Lecture
   and Foundations of Chemistry II Laboratory
4
OEAS 106N
  & OEAS 108N
Introductory Oceanography
   and Understanding Global Climate Change
8
OEAS 110NEarth Science4
or OEAS 111N Physical Geology
and
OEAS 112NHistorical Geology4
PHYS 101N
  & PHYS 102N
Conceptual Physics
   and Conceptual Physics
8
PHYS 111N
  & PHYS 112N
Introductory General Physics
   and Introductory General Physics
8
PHYS 231N
  & PHYS 232N
University Physics
   and University Physics
8

Upper Division General Education 

  • Option A. Approved Disciplinary Minor (a minimum of 12 hours determined by the department), or second degree or second major.
  • Option B: Interdisciplinary Minor (specifically 12 hours, 3 of which may be in the major)
  • Option C. International Business and Regional Courses or an approved Certification Program such as teaching licensure
  • Option D. Two Upper-Division Courses from outside the College of Sciences and not required by the major (6 hours)

In addition to completing the University's lower-division general education requirements and upper-division general education requirements, a computer science major must complete the following courses.

Required Computer Science Courses     

CS 110Introduction to Computer Science1
CS 150Problem Solving and Programming I4
CS 170Introduction to Computer Architecture I3
CS 250Problem Solving and Programming II4
CS 252Introduction to Unix for Programmers1
CS 270Introduction to Computer Architecture II3
CS 300TComputers in Society3
CS 330Object-Oriented Programming and Design3
CS 350Introduction to Software Engineering3
CS 355Principles of Programming Languages3
CS 361Advanced Data Structures and Algorithms3
CS 381Introduction to Discrete Structures3
CS 390Introduction to Theoretical Computer Science3
CS 410Professional Workforce Development I3
CS 411WProfessional Workforce Development II3
CS 417Computational Methods and Software3
CS 471Operating Systems3
Total Hours49

Elective Computer Science Courses

Three additional CS courses (9 credits) at the 300/400 level (excluding CS 333, CS 334 and CS 382).

Computer science majors may select their own electives from the CS offerings or may be guided by the following emphasis areas. Up to six credits of work experience (CS 367 or CS 368) may be used.

Database
CS 450Database Concepts3
CS 456Database Administration I3
CS 457Database Administration II3
Networking
CS 454Network Management3
CS 455Introduction to Networks and Communications3
CS 458Unix System Administration3
CS 472Network and Systems Security3
CS 486Introduction to Parallel Computing3
CS 487Applied Parallel Computing3
Systems Programming
CS 476Systems Programming3
CS 454Network Management3
CS 488Principles of Compiler Construction3
Web Programming
CS 312Internet Concepts3
CS 418Web Programming3
Game Programming
CS 480Introduction to Artificial Intelligence3
CS 460Computer Graphics3
CS 475Introduction to Computer Simulation3
Cyber Security
CS 462Cybersecurity Fundamentals3
CS 463Cryptography for Cybersecurity3
CS 464Networked Systems Security3
CS 465Information Assurance3
 Miscellaneous
CS 451Software Engineering Survey3
CS 488Principles of Compiler Construction3

Other Required Courses      

MATH 211Calculus I4
MATH 212Calculus II4
MATH 316Introductory Linear Algebra3
STAT 330An Introduction to Probability and Statistics3
Technical Electives *6-8
Total Hours20-22

*

Computer science majors must complete two courses not counted toward another degree requirement. These may be selected from biology, chemistry, ocean, earth and atmospheric sciences, and physics (excluding BIOL 105N-BIOL 106N, BIOL 108N-BIOL 109N, and PHYS 103N-PHYS 104N). With the approval of a computer science advisor, other technically oriented courses may be used to meet this requirement.

Computer science majors must earn a grade of C or better in all (non-elective) computer science courses required for the major and in all computer science prerequisite courses. A minimum of 9 credits of upper-level (300/400) computer science elective courses must be completed in addition to the required courses.

Requirements for graduation include a minimum cumulative grade point average of 2.00 overall and in the major, 120 credit hours, which must include both a minimum of 30 credit hours overall and 12 credit hours in upper-level courses in the major program from Old Dominion University, passage of the Computer Science Exit Exam, completion of ENGL 110C, ENGL 211C or 221C or 231C, and the writing intensive (W) course in the major with a grade of C or better, and completion of a Senior Assessment. Additional hours may be required to meet the foreign language requirement.

Honors Program

Students may obtain a Bachelor of Science in Computer Science with an honors designation through the completion of three junior/senior level computer science courses with honors designation and by achieving a 3.50 in-major GPA.

Advanced Placement

The Department of Computer Science awards credit for CS 133 to students who achieve a score of 3, 4, or 5 on the AP Computer Science A or AB exams or a 5, 6, or 7 on the IB Computer Science exams. 

Cooperative Education

Computer science majors interested in gaining practical experience and on-the-job training while completing undergraduate degree requirements may find opportunities through participation in the Cooperative Education Program.

Those students usually start in the junior year working with an employer in a field of computer science. Students must apply through the Career Management Center prior to registering for Cooperative Education credit. All work experiences must be approved by Career Management and the academic department concerned.

Undergraduates can earn a maximum of six semester credits through cooperative education that apply toward degree requirements. For further information, see the Career Management section of this Catalog.

Professional Development Tracks

Database Administration with Oracle Software

This track was developed in cooperation with Oracle Corporation. It prepares students for roles in modern database environments. Students may achieve Oracle DBA certification upon completion of this track. Key concepts, techniques and skills required for administering a state-of-the-art database platform are developed. The courses in this track include CS 450, CS 456, and CS 457.

Network Design and Administration

This track is intended for students who wish to establish a career in network design and administration in networker computing environments. Students will get hands-on experience in designing networks by configuring routers and switches and work with LAN and WAN routing protocols. This track includes coverage of the information required to take the CISCO, CCNA and CCNP certification. Courses under this track include CS 454 and CS 455.

Computer Science Add-on Endorsement for Professional Education Licensure

A person licensed by the Commonwealth of Virginia to teach in secondary schools may add an endorsement for computer science by completing this program. The required courses are:

CS 150Problem Solving and Programming I4
CS 170Introduction to Computer Architecture I3
CS 250Problem Solving and Programming II4
CS 252Introduction to Unix for Programmers1
CS 312Internet Concepts3
CS 330Object-Oriented Programming and Design3
or CS 355 Principles of Programming Languages
CS 361Advanced Data Structures and Algorithms3
CS 381Introduction to Discrete Structures3
Total Hours24

For more information, refer to the Darden College of Education section of this Catalog.

Bachelor of Science in Computer Engineering

The computer engineering undergraduate degree program is designed to provide both a broad engineering background and comprehensive foundation in the technical principles underlying the computer area. Students develop a background through course work in mathematics, the basic sciences, and general engineering. The technical core consists of courses from electrical and computer engineering to address hardware aspects of computer engineering and course work from computer science to address software aspects. A grade of C or better must be earned in computer science required courses. In addition, course work in General Education perspectives and communication skills is required to assure a well rounded program of study. Specific degree requirements can be found listed under the Department of Electrical and Computer Engineering.

Due to limited laboratory facilities, admission to the computer engineering program is on a competitive basis. Students should apply to the Department of Electrical and Computer Engineering.

Bachelor of Science in Engineering Technology with an Emphasis in Computer Engineering Technology

The goal of the computer engineering technology program is to prepare students for employment in areas defined by the rapidly expanding opportunities of computer applications. With new hardware and software products being introduced monthly, students who wish to succeed in this field should develop a background in both software and hardware. This program provides such a background by combining a grounding in basic theory with hands-on, application courses selected from the disciplines of Computer Science and Electrical Engineering Technology. The curriculum emphasizes practical design and the utilization of systems and hardware. Areas of concentration include network design and management, modern communication systems, microcomputer systems and applications, and application program development. A grade of C or better must be earned in computer science required courses. Specific degree requirements can be found listed under the Department of Engineering Technology.

Minor in Computer Science

Students may minor in computer science by taking the following courses:

CS 150Problem Solving and Programming I4
CS 250Problem Solving and Programming II4
CS 252Introduction to Unix for Programmers1
CS 361Advanced Data Structures and Algorithms3
or CS 330 Object-Oriented Programming and Design
Select two CS Electives at the 400-level or from the following:6
Internet Concepts
Object-Oriented Programming and Design
Principles of Programming Languages
Advanced Data Structures and Algorithms
Introduction to Software Engineering
Introduction to Discrete Structures
Introduction to Theoretical Computer Science
Total Hours18

A grade of C or better is required in each course. Students must also meet the University's requirements for a minor as described under Requirements for Undergraduate Degrees.

The curriculum for the Bachelor of Science in Engineering Technology with an emphasis in computer engineering technology and the Bachelor of Science in Computer Engineering contain a built-in minor in computer science.

Minor in Web Programming

Students may minor in Web Programming by taking the following:

CS 312Internet Concepts3
CS 330Object-Oriented Programming and Design *3
CS 418Web Programming3
One three-credit upper-level CS elective3
Total Hours12
*

 CS 252 and CS 333 are prerequisites and are not included in the calculation of the grade point average for the minor.

A grade of C or better is required in any of these courses if they are used as a prerequisite to any other CS course. Students must also meet the University's requirements for a minor as described under Requirements for Undergraduate Degrees.

Five-year Bachelor of Science in Computer Science and Master of Business Administration

This program allows students to earn a Bachelor of Science in Computer Science and a Master of Business Administration. After students have satisfactorily completed their undergraduate requirements, they must complete 30 credit hours in the MBA program.

Additional information can be found in the section on B.S./M.B.A. Five-year Program listed at the beginning of the College of Sciences section of this Catalog. Students interested in this program should contact the MBA Program as early as possible. The MBA Program manager will act as an advisor to the student in addition to the Computer Science advisor.

Accelerated Bachelor of Science in Computer Science and Master of Science in Computer Science

This program allows exceptionally successful students to earn both a bachelor's and master's degree in computer science within five years by allowing them to count up to 12 credits of graduate coursework toward both their undergraduate and master's degrees in computer science.

Admission

To be admitted to the accelerated program, students must have completed at least 60 undergraduate credit hours with at least 24 credit hours from ODU. Students must have completed CS 361, CS 381, MATH 212 and all prerequisites for those courses. At the time of admission, they must have an overall GPA of 3.00 or better, and an overall GPA of 3.00 or better in CS and MATH courses.

Interested students who meet the admission requirements should apply to the graduate program director, after consulting with the undergraduate chief departmental advisor, as soon as possible upon completing the required courses and 60 credit hours. In consultation with the graduate program director, a student will:

  1. Officially declare an undergraduate Computer Science major with the undergraduate chief departmental advisor.
  2. Draft a schedule of graduate courses to be taken as an undergraduate to be presented to the undergraduate chief departmental advisor.
  3. Apply, during their senior year, to the Office of Graduate Admissions for admission to the master's in computer science program.

Students who have completed at least six hours of graduate courses upon attaining senior standing (completion of 90 credit hours) and who have earned a GPA of 3.00 or better in those courses will not be required to take the Graduate Record Exam (GRE) for admission to the master's program. Otherwise, in keeping with normal admission requirements for the M.S. in computer science, students will take the GRE as an undergraduate and will subsequently be reevaluated for continuation into the master's program.

Once students have been awarded their bachelor's degree and fulfilled all regular admission requirements for the M.S. in computer science, they will be officially admitted into the M.S. program.

Program Requirements

Students in the program will fulfill all normal admission and curricular requirements for both a Bachelor of Science in Computer Science and an M.S. in computer science with the following exceptions:

  1. Students in the program may count up to 12 hours of graduate courses, at the 500 or 600 level, excluding independent study, taken as an undergraduate toward both the bachelor's and master's degrees in computer science.
    1. Students in the program may substitute computer science graduate courses for undergraduate courses according to the following schema. All students must complete an undergraduate writing intensive course in the major.
      Students may substitute 500- and 600-level courses for the upper-level CS electives in the undergraduate program so long as they have the prerequisites for those courses. 700- or 800-level courses may not be used.
    2. Students will not receive credit for both the 400 and 500 level version of the same course.
    3. Students in the program may make a written petition for other substitutions to the graduate program director, who will consider them in consultation with the chief departmental advisor and the instructor(s) of the courses involved.

NOTES:

  1. In accordance with University policy, up to 21 hours of graduate courses taken as an undergraduate may be counted toward the bachelor's degree in computer science. However, only 12 hours of graduate courses taken as an undergraduate may also be counted toward the M.S. degree in computer science. This will limit students' scheduling flexibility subsequently.
  2. Like students in the regular M.S. in computer science program, students in the accelerated B.S.C.S./M.S. computer science degree may count no more than 12 hours at the 500-level toward their M.S. degree. Students are advised against taking all 12 of those 500-level credits as an undergraduate, since doing so will limit their scheduling flexibility subsequently.

Computing Facilities


The Department of Computer Science houses a state-of-the-art IT infrastructure consisting of two data centers (one in Dragas Hall and another in the Engineering and Computational Sciences building), two general purpose open labs, two teaching labs, five research labs, and an access grid room. The backbone network of the department is using 10 Gigabit Ethernet connections between data centers and essential servers. The department houses over 750 high performance workstations of various cutting edge processor architectures. All workstations are connected to the department's servers via Gigabit Ethernet. The network infrastructure consists of mostly Layer 3 Gigabit, 10 Gigabit Ethernet switches, and checkpoint/Pix firewalls configured and maintained by the departmental staff in order meet the needs of research and instructional faculty.  The department has access to a variety of Internet services, including 1Gbps connection to Cox communication, 1Gbps connection to Level 3 and 1Gbps connection to Cogent. Connections to Level 3 and Cogent are over a private DWDM regional optical network infrastructure, with redundant 10Gbps links to Northern VA MARIA aggregation nodes (Mclean and Ashburn). The DWDM infrastructure project named ELITE (Eastern Lightwave Internetworking Technology Enterprise) provides access not only to the commodity Internet but gateways to other national networks to include the NLR (National Lambda Rail), Energy Science Network, Internet2, and Abilene.  In addition to workstations and servers, the Department of Computer Science has several High-Performance Computing Clusters that are regularly upgraded with the latest processor technology.  Our clusters are interconnected with high bandwidth and low latency interconnects.  The data centers house cutting edge servers of various configurations and manufacturers. There are over 50 servers from Oracle/Sun, HP, and Dell. These servers provide applications and services for over 2000 faculty and student members. These services include, but are not limited to, NIS, DNS, DHCP, Web, Oracle, MsSQL, MySQL databases, Samba, CIFS, NFS shares, Microsoft Exchange and Sendmail. Utilizing two EMC NAS/SAN storage devices in a DR configuration, the department offers more than 100 Terabytes of data storage to various research projects and user needs.

Specific instructional resources include:

  • Problem Solving Lab equipped with high end workstations
  • Instructional Lab, equipped with high end workstations, laptop stations and group study areas
  • Intro Teaching Lab with workstations that support VDI connectivity
  • Open Lab, equipped with high end workstations and group study areas
  • Beowulf Cluster Lab, 4 Clusters for student instructional use
  • Virtual Computing Lab, 6 servers clustered with High Availability, Data Center
  • Remote Shell Access, 3 Sun Unix M4000 quad-quad servers, Data Center
  • Cloud Infrastructure, Eucalyptus (4 Dell R710/R910), Data Center
  • Network Lab, Various routers, switches, and PIX firewalls, Dragas
  • CPI Projects Lab, Various Technologies, Dragas
  • Sensor and mobile computing lab, ECS

COMPUTER SCIENCE Courses

CS 101. Computers: An Introduction. 3 Credits.

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. 3 Credits.

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. 1 Credit.

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. 1 Credit.

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 Software. 1 Credit.

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 110. Introduction to Computer Science. 1 Credit.

Lecture 1 hour; 1 credit. Available for pass/fail grading only. Introduction to the Computer Science Department, College of Sciences, Old Dominion University, and to the profession of computer science. This course provides students with a broad introduction to the scientific research efforts of computer science and the applications using those research efforts. Required for incoming computer science majors.

CS 120G. Introduction to Information Literacy and Research. 3 Credits.

Lecture 3 hours; 3 credits. 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. 3 Credits.

Lecture 3 hours; 3 credits. 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. 3 Credits.

Lecture 3 hours; 3 credits. Open only to students in the Honors College. A special honors version of CS 120G.

CS 133. Introduction to Programming in Java. 4 Credits.

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. Prerequisite: MATH 102M or MATH 103M.

CS 150. Problem Solving and Programming I. 4 Credits.

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. Prerequisite: MATH 102M or MATH 103M or equivalent.

CS 170. Introduction to Computer Architecture I. 3 Credits.

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. Prerequisite: MATH 102M or MATH 103M and a grade of C or better in CS 150.

CS 250. Problem Solving and Programming II. 4 Credits.

Lecture 3 hours; laboratory 2.5 hours; 4 credits. Prerequisites: MATH 162M and a grade of C or better in CS 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. 1 Credit.

Laboratory work required. 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. Prerequisites: A grade of C or better in CS 150.

CS 270. Introduction to Computer Architecture II. 3 Credits.

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.

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. 3 Credits.

Lecture 3 hours, 3 credits. Prerequisite: 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. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: 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. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: MATH 163, CS 252 and a grade of C or better in 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++. 4 Credits.

Lecture 4 hours; 4 credits. Prerequisites: MATH 163 and a grade of C or better in CS 150 (or an equivalent course in a high level language). Laboratory work required. Corequisite: CS 252. 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. 4 Credits.

Lecture 4 hours; 4 credits. Prerequisites: MATH 163 and a grade of C or better in CS 150 (or an equivalent course in a high level language). 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. 3 Credits.

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. 3 Credits.

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. Prerequisites: A grade of C or better in CS 250 and 252. Laboratory work required.

CS 361. Advanced Data Structures and Algorithms. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: MATH 163, CS 252 and a grade of C or better in CS 250 or 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.

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/fail 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. 1-3 Credits.

3 credits. Prerequisite: approval by CS Department and Career Management. Available for pass/fail 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. 3 Credits.

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.

CS 382. Introduction to JAVA. 1 Credit.

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. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: A grade of C or better in CS 250 and 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.

1-3 credits. Prerequisite: permission of the instructor.

CS 410/510. Professional Workforce Development I. 3 Credits.

Lecture 3 hours; recitation 1 hour; 3 credits. Prerequisites: A grade of C or better in CS 300T 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/511. Professional Workforce Development II. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: A grade of C or better in ENGL 211C or 221C or 231C and a grade of C or better in CS 330 and 410. 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/517. Computational Methods and Software. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: MATH 316 and a grade of C or better in CS 250. 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, nonlinerar equations, iterative solution of linear systems.

CS 418/518. Web Programming. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: A grade of C or better in CS 312 and 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 450/550. Database Concepts. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: A grade of C or better in CS 381 and either CS 330 or 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/551. Software Engineering Survey. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: A grade of C or better in CS 330 or 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/554. Network Management. 3 Credits.

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/555. Introduction to Networks and Communications. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: STAT 330 and a grade of C or better in CS 270. Laboratory work required. OSI and TCP IP reference models and protocols. Hardware survey, datalink, network, and transport layers. Broadcast and point-to-point networking techniques, routing, switching, and LAN media access. Internetworking, ATM, Gigabit Ethernet, wireless networks, and network security.

CS 456/556. Database Administration I. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: 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/557. Database Administration II. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: 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/558. Unix System Administration. 3 Credits.

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/560. Computer Graphics. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: 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/562. Cybersecurity Fundamentals. 3 Credits.

The course introduces the basic components and concepts needed for understanding cybersecurity. These include basics and security vulnerabilities of networks, operating systems, databases, and distributed systems. In addition, some fundamentals of security enforcement will be introduced and discussed. Prerequisite: CS 270.

CS 463/563. Cryptography for Cybersecurity. 3 Credits.

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. Prerequisite: CS 270.

CS 464/564. Networked Systems Security. 3 Credits.

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. Prerequisite: CS 463 or CS 563.

CS 465/565. Information Assurance. 3 Credits.

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. Prerequisites: CS 456 or CS 556 and CS 471.

CS 471. Operating Systems. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: A grade of C or better in CS 270 and 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. 3 Credits.

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/575. Introduction to Computer Simulation. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: STAT 330 and a grade of C or better in CS 330 or 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/576. Systems Programming. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisites: A grade of C or better in CS 330 and 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/578. Computational Geometry, Methods and Applications. 3 Credits.

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. Prerequisites: CS 361 and MATH 211.

CS 480/580. Introduction to Artificial Intelligence. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: 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/586. Introduction to Parallel Computing. 3 Credits.

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. 3 Credits.

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/588. Principles of Compiler Construction. 3 Credits.

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/595. Topics in Computer Science. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor.

CS 497/597. Independent Study in Computer Science. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor. Independent study under the direction of an instructor.