Department of Computer Science

Xiaohong Dorothy Yuan, Interim Chairperson


Computer Science – Bachelor of Science (Curriculum Guide)


The mission of the Bachelor of Science Program in Computer Science is to provide the opportunity for its students to acquire the educational background necessary to pursue professional careers in the wide variety of positions in which Computer Science is required, or to continue their education toward advanced degrees in computer science. The primary purpose of the Department is to teach theory, abstraction, and design related to the field of computer science.


The educational objectives of the Computer Science Undergraduate Program are that each graduate of the program should be able to:

  1. Perform effectively in a computer science related position in industry.
  2. Perform effectively in graduate programs where an undergraduate degree in computer science is required.
  3. Communicate ideas and interact effectively with others to accomplish desire goals.


The Computer Science Program enables students to achieve the following outcomes by the time of graduation:

  1. An ability to apply knowledge of computing and mathematics appropriate to the discipline.
  2. An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  3. An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs.
  4. An ability to function effectively on teams to accomplish a common goal.
  5. An understanding of professional, ethical, and social responsibilities.
  6. An ability to communicate effectively.
  7. An ability to analyze the impact of computing on individuals, organizations, and society, including ethical, legal, security, and global policy issues.
  8. Recognition of the need for and an ability to engage in continuing professional development.
  9. An ability to use current techniques, skills, and tools necessary for computing practice.
  10. An ability to apply mathematical foundations, algorithmic principles and computer theory in modeling and design of computer-based systems.
  11. An ability to design and development principles in construction go software systems of varying complexity.
  12. An understanding of the basics of computer hardware and how software interacts with computer hardware.


The Computer Science major must complete 120 credit hours following the approved departmental curriculum. Majors must also satisfy all University and College of Engineering requirements. Included in the 120 semester hours are 58 hours in Computer Science courses and 20 hours in mathematics.


The undergraduate program in Computer Science, leading to the Bachelor of Science in Computer Science (BSCS) degree, is accredited by the Computing Accreditation Commission of ABET,


The Bureau of Labor Statistics of the U.S. Department of Labor in its “Occupational Outlook for College Graduates” continues to report that the employment outlook for computer-oriented graduates is very good. Opportunities in the area are expected to grow faster than the average of all occupations through the next decade. 

Minimum Grade of “C” Policy

Computer Science students must earn a grade of “C” or better in the following courses to graduate or to satisfy prerequisite requirements of subsequent courses: COMP 163, and 167, COMP 180, 267, 280, 285, 322, 350, 360, 365, 375, 385, 390,  410, 476, and 496, MATH 131.


COMP 120. Computers and Their Use Credit 3(2-2)
This course provides a survey of the basic principles of computer hardware, computer communications, application software, operating systems, security, impact on society, use in organizations and systems development. Principles of programming are introduced. Information is at a level for the students to become informed users. This course cannot be taken for credit by Computer Science majors. (F;S;SS)

COMP 121. Computer Science Freshmen Colloquium Credit 1(1-0)
This course includes lectures, seminars and activities important to the retention and matriculation of computer science students.  Topics covered include learning styles, group dynamics, computer science history, and career development. Students are also provided with group advisement regarding department, college, and university-level policies and procedures. (F;S;SS)

COMP 160. Computer Program in C++ for Engineers (formerly GEEN 160) Credit 2(2-2)
This is an introductory course in C++ computer programming for engineering students. Problem solving techniques and coding algorithms will be stressed. Students will write programs for such tasks as engineering decision-making and numerical computation. Material relevant to the Fundamentals of Engineering exam will be covered. (F;S;SS)

COMP 163. Introduction to Computer Programming (formerly GEEN 163) Credit 3(2-2)
This is an introductory course in computer programming. Problem solving techniques and writing algorithms will be stressed. Students will write programs for such tasks as engineering decision-making and numerical computation. (F;S;SS)

COMP 167. Computer Program Design (formerly GEEN 165) Credit 3(2-3)
This is a second course in computer programming for students with an interest in computers. Students will learn to write programs in a high level programming language. Prerequisite: COMP 163. (F;S;SS)

COMP 170. Introduction to Web Engineering Credit 3(3-0)
This course introduces basic web development using HTML and client-side and server-side scripting. Students also learn how to incorporate security features into web sites as well as how to access and manage online databases. This course also covers the role of the web in disseminating knowledge, community formation, training, collaboration, and other social activities. (F;S;SS)

COMP 180. Discrete Structures Credit 3(3-0)
Students will be introduced to formal systems, including propositional and predicate logic, that can be used to reason about computer algorithms. Students will develop an understanding of how to read and construct valid proofs of the properties of algorithms. Important discrete data structures, such as sets, relations, discrete functions, graphs and trees, will be introduced. Prerequisite: MATH 110 or MATH 131. (F;S;SS)

COMP 200. Computer Science Sophomore Colloquium Credit 1(1-0)
This course provides the student with exposure to current issues in computer science. Colloquium speakers shall include visitors and faculty. Prerequisite: Sophomore standing. (F)

COMP 267. Data Base Design Credit 3(3-0)
This course focuses on logical and physical organizations of large sets of related data. It covers issues in file structures as well as file and database management systems. It explores relational models, hierarchical models, directed graph models, data definition and manipulation languages, and relational calculus. Application oriented projects are required. Prerequisite: COMP 280. (F;S)

COMP 280. Data Structures Credit 3(3-0)
This is the third course in the computer science sequence. It introduces abstractions (algorithm, data type, complexity) and programming tools (pointers, dynamic memory, and linked data structures). The course also examines essential data structures, (stacks, queues, trees, linked lists, and graphs). It analyzes and implements techniques such as hashing, sorting, searching, and priority queues, to solve general problems. The emphasis of the course is on building modular programs that can be changed to use different data structures and algorithms. Prerequisite: COMP 280. (F;S;SS)

COMP 285. Design and Analysis of Computer Algorithms Credit 3(3-0)
This course covers analysis of efficient algorithms for sorting, searching, dynamic structure manipulation, path-finding, fast multiplication, and other problems. It introduces algorithmic techniques such as recursion, divide-and-conquer, and dynamic programming. It develops the following tools for algorithmic analysis: correctness proofs, algorithm synthesis, and discusses issues in non-computability. The course also overviews non-deterministic algorithms, and develops techniques to classify computationally hard problems. The concept of non-deterministic polynomial (NP)-completeness is introduced, and basic issues related to NP-completeness are discussed. Prerequisites: COMP 280, MATH 131. (F;S;SS)

COMP 300. Computer Science Junior Colloquium Credit 1(1-0)
This course provides the student with exposure to current issues in computer science. Colloquium speakers shall include visitors and faculty. Prerequisite: Junior standing. (F;S;SS)

COMP 320. Fundamentals of Information Assurance Credits 3(3-0)
This course covers concepts in computer network and information security. Topics include: software strategies for exchanging secure data and encryption standards. Strategies for the physical protection of information assets are explored. Issues involving information security management within an enterprise are covered, including suitable organizational policy, plans, and implementation strategies. Ethical issues, such as monitoring employee computer use and proper limitations on the use of customer data, are also discussed. Prerequisite: COMP 280. (F;S;SS)

COMP 321. Computer System Security Credits 3(3-0)
This course introduces the principles of information systems security and examines security policies, models, mechanisms for secrecy, integrity, availability and access controls. Topics include common system vulnerabilities and countermeasures, data availability and usage control, authentication technologies, design secure systems, operating systems security, network security, programming language security, and distributed systems security. Prerequisite: COMP 285. (F;S;SS)

COMP 322. Internet Systems Credit 3(3-0)
This course addresses the structure and functionality of the Internet and software that exploits it. Topics include mark up languages, Web tools, static, dynamic and active web pages, multimedia in Web applications, communication protocols, client-server, computing, scripting, group communication support, e-commerce, and security. Topics also include systems for organizing and coordinating work at different sites, multiagent systems that exploit the Internet, and architectures to exploit the distributed computational power offered by the Internet. Prerequisite: COMP 280. (F;S;SS)

COMP 323. Introduction to Health Care Information Systems Credits 3(3-0)
This course introduces broad aspects of health care information systems. The goal is to prepare students with knowledge for effectively managing health care information systems. The main topics of this class include: types of health care information and data, regulations, standards, and laws of health care information, history of health care information systems, technologies in health care information systems, health care information systems standards, security in health care information systems, management of health care information systems. Prerequisite: Junior Standing.(F;S;SS)

COMP 340. Game Intelligence Credits 3(3-0)
This course provides an overview of concepts used in game intelligence. Topics will include intelligent game agents, game state representation, search, and machine learning. Prerequisite: COMP 280. (F;S;SS)

COMP 350. Operating Systems Credit 3(3-0)
This is an introduction to the theory and practice of operating system design and implementation. Algorithmic techniques are presented for implementing process management, storage management, processor management, file systems, security, distributed systems, performance evaluation, and real time systems. Prerequisite: COMP 375. (F;S)

COMP 356. Computational Hip-Hop and Object-Oriented Design Credits 3(3-0)
This course introduces students to the fundamentals of the Unified Modeling Language (UML) from a Hip-Hop perspective. Students will learn how to use UML to reverse and forward engineer design artifacts for Hip-Hop music, and software applications. Prerequisite: GEEN 163 or Instructor’s Permission. (F;S;SS)

COMP 360. Programming Languages Credit 3(3-0)
This course focuses on formal specification of programming languages, including definition of syntax and semantics: simple statements including precedence, infix, prefix, and postfix notations. It highlights global properties of algorithmic languages including sequence control, data structure implementation, scoping, storage management, grouping of statements, binding time, sub-routines, co-routines, and tasks. Prerequisite: COMP 285. (F;S)

COMP 363. Object Oriented Programming Credit 3(3-0)
This is a course in object oriented program development. The main topics include encapsulation, polymorphism, inheritance, debugging and performance tuning. Prerequisite: COMP 280. (F;S)

COMP 365. Programming Methodologies & Concepts Credit 3(3-0)
This course covers advanced programming techniques in order to enhance the student’s knowledge and experience in programming. This course includes techniques dealing with advanced object oriented programming, human computer interaction, computer graphics and current programming trends. This course will also cover AI techniques such as search strategies and knowledge representation. Prerequisite: COMP 285. (F;S;SS)

COMP 368. Object-Oriented Software Development Credits 3(3-0)
This course studies object-oriented software development. Object-oriented modeling, software design by pattern, software design by generic component, software reuse and object-oriented application frameworks are introduced. Problems in large software systems are discussed, and students learn how to integrate object-oriented language features into object-oriented software development. Prerequisite: COMP 280. (F;S;SS)

COMP 375. Computer Architecture and Organization Credit 3(3-0)
This course explores the design of computer systems and their architectures. Topics include central processing unit architecture, microcode, system interconnections, memory systems, Input/Output systems, interrupt handling, peripherals and communications networks. Prerequisite: COMP 280 or ECEN 327. (F;S)

COMP 385. Theory of Computing Credit 3(3-0)
This course is the study of topics which include theory of finite state machine and automata; regular expressions; Turing machines; grammars; parsing; language hierarchy; machine design and construction; computability; unsolvability; halting problem; computational complexity; and recursive functions. The course also discusses issues in equivalence of various computational models, minimization, and characterizations. Prerequisite: COMP 360. (F;S)

COMP 390. Social Implications of Computing Credit 3(3-0)
This course examines the increasingly complex interaction between computer systems, our social fabric and ethics. Software and microprocessors control automobiles, banks, brokerage trading, aircraft, medical equipment, and just about every other device used in industrialized nations. Impacts of computerized systems upon personal privacy and citizen involvement in governance are examined in relation to the public policy questions of the day. The role and opportunity for historically under-represented groups will be explored. Interdisciplinary readings are stressed, along with required written and oral presentations and class debates. (F;S)

COMP 397. Cooperative Industrial Experience I Credit 3(3-0)
This is a supervised learning experience in an approved private or governmental facility. The student must be employed full-time for at least one semester and must perform supervised work that will enhance his/her educational background in an area related to computer science. In addition to the supervisor’s evaluation in the field, the student’s performance will be evaluated by a departmental faculty committee, based upon the recommendation of the Director of the Co-operative Education Program reports, informal portfolios and forum and/or seminar presented by the student upon his/her return to the university. Prerequisite: Permission by advisor. (F;S)

COMP 410. Software Engineering Credits 3(3-0)
This course is an introduction to the principles underlying software specification, implementation, validation, and management. It addresses application of software engineering concepts to large software systems. Team effort is emphasized throughout the course. Prerequisite: COMP 360. (F;S)

COMP 411. Introduction to System Testing and Evaluation (formerly COMP 511) Credit 3(3-0)
This course is an introduction to methods, techniques and procedures for system testing and evaluation. The main topics include reliability measurement, testing small and large systems, black box software testing, white box software testing, testing of concurrent and real-time systems, client-server testing, test case design methods, and auotmated testing tools. Prerequisite: COMP 410. (F:S:SS)

COMP 420. Applied Network Security Credits 3(3-0)
This course covers network security concepts and various network security practices and solutions. Topics include cryptography, Public Key Infrastructure (PKI), taxonomy of various attack methods, firewalls, intrusion detection and prevention, Internet Protocol (IP) security, and web security. Prerequisite: COMP 285. (F;S;SS)

COMP 421. Security Management for Information Systems Credits 3(3-0)
This course covers in-depth examination of topics in the management of information systems security including access control systems & methodology, risk management, business continuity and disaster recovery planning, legal and ethical issues in information system security, computer operations security, physical security, and information security maintenance. Prerequisite: COMP 285. (F;S;SS)

COMP 440. Game Design Credits 3(3-0)
This course will provide an introduction to current techniques used in game design. Topics will include game engines, game mechanics, autonomous game agents, and multi-player games. Prerequisite: COMP 340. (F;S;SS)

COMP 445. An Introduction to Artificial Intelligence Credit 3(3-0)
This course is an introduction to the theory of artificial intelligence and a survey of artificial intelligence application areas. It covers the foundational concepts related to knowledge representation and search strategies. An artificial intelligence language is presented to give programming experience in implementing basic artificial intelligence concepts. Some of the applications areas that are discussed include: game playing, expert systems, theorem proving, natural language understanding, machine learning, planning, and robotics. Prerequisites: COMP 285. (DEMAND)

COMP 453. Introduction to Computer Graphics (formerly COMP 553) Credit 3(3-0)
This is an introductory course in fundamental principles and method in the design, use, and understanding of computer graphic systems. Topics include coordinate representations, graphics in functions, graphics algorithms and software standards. It also introduces basic two-dimensional transformations, reflection, shear; windowing concepts, clipping algorithms, window-to-viewpoint transformations, segment concept and interactive picture-construction techniques. Prerequisite: COMP 285. (F;S;SS)

COMP 463. Introduction to Compiler Design (formerly COMP 563) Credit 3(3-0)
This course gives an introduction to the theoretical and practical aspect of constructing compilers for computer programming languages. The course covers principles, models and techniques used in the design and implementation of compilers, interpreters, and assemblers. Each student will develop and implement a compiler. Prerequisite: COMP 285 and COMP 375. (F;S;SS)

COMP 468. Introduction to Data Mining (formerly COMP 567) Credit 3(3-0)
This course introduces the modern computer application of data mining. The theory of data mining is presented as well as applications of its principles in industry. This course covers the basics of techniques and applications such as cluster detection, market basket analysis, decision tree derivation, genetic algorithms, artificial neural networks, memory-based reasoning, and data warehouses. Students learn a variety of algorithms for discovering meaningful patterns and rules in large quantities of data. Prerequisite: COMP 280. (F;S;SS)

COMP 469. Introduction to Parallel Programming Credit 3(3-0)
This course provides an introduction to parallel programming and problem solving. Topics include parallel programming design, parallel programming models, programming on multicore architectures, parallel computational thinking, and introduction to performance analysis of parallel algorithms. Prerequisite: COMP 350 or consent of instructor. (F;S;SS)

COMP 476. Networked Computer Systems Credit 3(3-0)
This course presents an overview of the technology, architecture and software used by systems of network-connected computers. The course will cover data transmission, local area network architecture, network protocols, internetworking, security, and World Wide Web technology. Students will write programs that run concurrently on multiple computers. Prerequisite: COMP 375. (F;S)

COMP 485. Special Topics in Computer Science (formerly COMP 590) Credit 3(3-0)
This course permits the exploration of advanced topics pertinent to student’s program of study in a seminar setting. (F;S)

COMP 495. Senior Project I (formerly COMP 595) Credit 3(3-0)
This course is the first course in a two-semester sequence, which allows students the opportunity to design and implement a software project from start to finish. Projects started in this course will be completed in COMP 496, giving the student the opportunity to work on a project of significant size. Students taking this course must take COMP 496. Prerequisite: COMP 285; Corequisite: COMP 410. (F;S;SS)

COMP 496. Senior Project II (formerly COMP 596) Credit 3(3-0)
This course allows students the opportunity to design and implement a software project from start to finish. Projects started in COMP 495 must be completed in this course for students working on a yearlong project. Student choosing to do a semester project must start and complete the project in this course. This course gives the student the opportunity to work on a software project of significant size. Prerequisite: COMP 410. (F;S;SS)


Mohd Anwar
Associate Professor
B.S., Winona State University; M.S., North Dakota State University; Ph.D., University of Saskatchewan

Shearon A. Brown
Teaching Associate Professor and Director of Undergraduate Studies
B.S., M.S., North Carolina A&T State University; M.S., University of Illinois

Kelvin Bryant
Assistant Professor
B.S., M.S., Ph.D., North Carolina State University

Edward Carr
Teaching Assistant Professor
B.S., Wingate University; M.S., Western Carolina University; M.S., Ph.D., North Carolina A&T State University

Albert Esterline
Associate Professor
B.A., Lawrence University; M.Litt., Ph.D., University of St. Andrews; M.S., Ph.D., University of Minnesota

Jung Hee Kim
Associate Professor
B.A., Korea University, M.S., Ph.D., Illinois Institute of Technology

Kaushik Roy
Assistant Professor
B.S., M.S., University of Rajshahi; M.S., Ph.D., Concordia University

Kenneth A. Williams
Associate Professor
B.S., M.S., Michigan Technological University; Ph.D., University of Minnesota

Jinsheng Xu
Associate Professor
B.S., Nanjing University; M.S., Beijing University; Ph.D., Michigan State University

Huiming Anna Yu
Professor and Director of Graduate Studies
B.S., Xiamen University; M.S., Hefei Polytechnic University; Ph.D., Stevens Institute of Technology

Xiaohong Dorothy Yuan
Professor and Interim Chairperson
B.S., Huazhong University of Science and Technology; Ph.D., Institute of Automation, Chinese Academy of Sciences; Ph.D., Florida Atlantic University