Department of Computer Science

25 University Avenue, Room 150
James D. Fabrey, Chairperson

PROFESSORS: Epstein, Fabrey

ASSOCIATE PROFESSORS: Agah, Jiang, Kline, Lu, Wyatt, Yang


The Department of Computer Science offers a program leading to the bachelor of science degree. Students also can select courses leading to a computer security certificate. The B.S. in computer science prepares the student for a career in the field of computer science and its applications, such as security, and/or additional study in computer science at the graduate level. Students can gain valuable on-the-job experience through an internship program with local industry or business. Normally, the computer science degree requires attendance during eight academic semesters. It is important that each student consults with his/her adviser to ensure that all requirements are being met.


120 semester hours

  1. General ed. requirements, see pages 38-44 (48 semester hours)
    MAT 151*
    *Required courses that will count towards the general education requirements.
  2. Core curriculum
    1. Computer science requirements (27 semester hours)
      CSC 141, 142, 220, 240, 241, 242, 301, 345, 402
    2. Communication skills requirements (3 semester hours)
      ENG 368 or 371 and SPK 208* or 230*
      *Required courses that will count towards the general education requirements.
    3. Mathematics requirement (7 semester hours)
      MAT 121, 161
    4. Additional mathematics and science requirements (11 semester hours)
      MAT 122 or 162, plus electives in science or mathematics (At least one general education science course must be a laboratory science course for science majors.)
  3. Complex large-scale systems (3 semester hours)
    CSC 416 or 417 or 496
  4. Computer science 300- and 400-level electives (18 semester hours)
    A minimum of 6 semester hours of 400-level courses is required. If CSC 416 and 417 are both taken, one can be used here. Three semester hours of the 6-semester hour internship CSC 400 can be used here.
  5. Free electives (3 semester hours)
  6. Special entrance requirements
    Students who enter WCU as freshman computer science majors should meet the following high school criteria:
    • Rank in the top two-fifths of graduating class
    • Pass algebra I, algebra II/trigonometry, geometry, and a senior-year math course
    • Earn a math SAT original score of 530 (or recentered score of 550) or better
    • Earn a combined SAT original score of 950 (or recentered score of 1020) or better
  7. Advanced Placement credit
    The following guidelines will be used to determine college credit when evaluating Advanced Placement scores in computer science.
  8. Examination AP Score Policy
    Computer Science A or AB 3, 4, 5 3 credits for CSC 141

  9. Minimum grades to enter major and to graduate: C- in CSC, MAT, and other cognate courses; 2.5 GPA in CSC courses; 2.0 GPA in MAT courses; and a grade of C- or better for both CSC 141 and 142. This policy does not apply to courses that are taken as free electives. Entering majors must have completed CSC 141-142 and two of MAT 121, 151, 161.

Minor in Computer Science (19 semester hours)

Baccalaureate students may receive transcript recognition for a minor area of study in computer science by completing the following six required courses:
CSC 141, 142, 240, 241; MAT 151, 161

NOTE: Students must earn a minimum grade of C- in each course and an overall GPA of 2.0 in the minors and certificate program listed below.

Minor in Information Technology (18 semester hours)

The minor in information technology introduces students to the fundamentals of programming, computer security, Web technology, database systems, and networking. All students must complete the following six required courses:
CSC 115 and 301, CST 221 and 235, CSW 131 and 315.

NOTE: Students must earn a minimum grade of C- in each course and an overall GPA of 2.0 in the minors and certificate program listed below.

Minor in Web Technology and Applications (18 semester hours)

The minor in web technology and applications introduces students to fundamental principles of web design, including the underlying technology and principles of aesthetics and effective communications. All students in the minor must complete three core courses (ART 113, COM 201, CSW 131) and select one elective from each of three different departments (three electives total chosen from ART 210; COM 222**, 292**; CSW 315**; EDM 300; ENG 320; HIS 390**; 480**; WRH, 205; or an approved independent project).

NOTE: A student must earn a minimum grade of C- in each course and a minimum overall GPA of 2.0 for all courses taken for the minor.

** At least one of these electives must be a designated capstone project course.

Certificate in Computer Security (18 semester hours)

Students can receive a certificate in computer security that will appear on their transcripts.

Required courses:
CSC 301, 302, 331, 335, and 402

Two different courses chosen from the following:
CRJ 380; CSC 300, CSC 400, CSC 490 (IA topic), 499 (IA topic); MAT 405 (IA topic)

NOTE: Students must earn a minimum grade of C- in each course and an overall GPA of 2.0 in the minors and certificate program listed below.


Symbol: CSW

101 Introduction to Computers (3) (nonmajors) This course is for nonmajors dealing with what computers are, what they can do, and how they are used. A brief history of computers and the societal implications of computer usage. A brief introduction to the Internet is provided along with hands-on experience using word processing, database, and spreadsheet software.

131 Introduction to Web Design (3) This course will cover HTML and introductory JavaScript programming to provide students with a basic technology skill set for pursuing other topics in web technology. Use of some simple web authoring and graphics packages, but a focus on the structure and semantics of HTML and JavaScript. One of three core requirement courses for the web technology and applications minor. PREREQ: Familiarity with basic graphical user interface and systems concepts such as files, folders, and use of an editor, and web browsers.

315 Introduction to Web Programming (3) This course will continue the design and methodologies practices that were begun in CSW 131. Beginning with an introduction to project management, the course will look at specific design practices and technology integration. In addition, the course will focus on learning to use a commercial editor and delve into server-sided scripting languages. PREREQ: CSC 115 and CSW 131. This can be used as a capstone fulfillment. For nonmajors only.

Symbol: CST

221 Database Systems (3) (nonmajors) This course introduces students to the role of databases in information technology. PREREQ: CSC 110 or 115.

235 Network and System Administration (3) (nonmajors) This course introduces students to the fundamentals of networks and systems administration. PREREQ: CSC 110 or 115.

Symbol: CSC

110 Fundamentals of Computer Science (3) (nonmajors) Introduction to the fundamentals of computing. Topics include surveys of the following sub-areas of computer science: artificial intelligence, hardware/operating systems, programming languages/software, ethics/social issues, history, electronic communications, problem solving, and programming. The course includes laboratory projects in application software, programming, and electronic communication.

115 Introduction to Computer Programming (3) (nonmajors) The art and science of computing are introduced using an object-oriented programming language, such as Visual Basic. Topics include looping, branching, arrays, and program development.

141 Computer Science I (3) An introduction to programming using Java. Topics covered include basic program layout, primitive data types and strings, control structures (loops and decisions), methods, parameters, and text file input/output. PREREQ: High school algebra.

142 Computer Science II (3) This course introduces the design and implementation of classes and objects, arrays using primitive types and strings, arrays of objects, sorting and searching through arrays, recursion, aggregate objects, and an introduction to graphical user interfaces (GUI’s). PREREQ: CSC 141.

220 Foundations of Computer Science (3) Topics include regular and context free grammars and languages, computational logic, finite state machines, and parsing. PREREQ: MAT 151 and 161.

240 Computer Science III (3) This course focuses on more advanced topics in object-oriented programming, including project design planning, and testing using milestone and checklists. Programming topics include text processing (including the StringBuilder and StringTokenizer classes), inheritance, polymorphism, abstract classes, interfaces, generic classes, exception classes, exception throwing and handling, random access files, serialization, and an introduction to some basic data structures, such as collection and linked lists. PREREQ: CSC 142.

241 Data Structures and Algorithms (3) Data structures and related algorithms are studied using object-oriented programming, such as Java. Topics include data abstraction, recursion, lists, stacks, queues, linked lists, trees, hashing, searching and sorting algorithms, and the evaluation of algorithm efficiency. PREREQ: CSC 240, MAT 151 and 161.

242 Computer Organization (3) This course teaches introductory topics in computer architecture and hardware design as well as the basics of assembly language. Software is provided to assemble, run, and debug assembly language programs. Additionally, a C compiler demonstrates a realistic usage of pointers and bitwise operations of assembly language. PREREQ: CSC 142, MAT 151.

300 Cooperative Programming (3) The student works for an organization involved in the computer field. The student may do work in various areas of the discipline such as programming, networking, or customer support. PREREQ: Written approval of the internship director and a minimum grade of C- in each of the following courses: CSC 141, 142, 240, and 241 with a 2.50 GPA in CSC; MAT 151 and 161 with a 2.00 GPA in MAT.

301 Introduction to Computer Security (3) An introduction to computer security and the ethical underpinnings of security. The basic objectives of creating a secure system, attack methods, and defenses are discussed. PREREQ: Three courses in the information technology minor, or CSC 240.

302 Computer Security II (3) Principles and current technological developments in computer security (a continuation of CSC 301). Topics include security requirements, attack models, cryptography, authentication, and systems security, among others. Students will also learn practical knowledge through hands-on lab experience. PREREQ: CSC 301.

317 Visual Programming (3) Principles of visual programming. A second computer language (visual basic) is utilized, and a major theme, such as steganography or video games, is covered. Students must write two major projects of significant complexity. PREREQ: CSC 240.

321 Database Management Systems (3) Characteristics of generalized database management systems. Surveys of different database models that are currently used. The design and implementation of a database system. PREREQ: CSC 241.

331 Operating Systems (3) This course is a general survey of elements of operating systems with in-depth studies of certain features of specific operating systems. Elements of concurrent programming are studied, such as the mutual exclusion problem, semaphores, and monitors. Additionally, the following topics are covered: process scheduling and deadlock avoidance; memory management issues such as paging and segmentation; organization and protection of file systems. PREREQ: CSC 220, 241, and 242.

335 Data Communications and Networking I (3) An overview of the various aspects of modern data and telecommunications. Discussion of the hardware and software facets of the transmission of information in the forms of voice, data, text, and image. Topics include communication protocols, transmission technologies, analog/digital transmission, communications media, public data networks, LANs, and ISDN. PREREQ: CSC 241.

336 Data Communications and Networking II (3) An in-depth study of various aspects of modern data communication systems. Discussion of serial port communications, network performance and design, and Internet protocols. Topics include PC serial port hardware (RS-232, UART) and software (XMODEM protocol), queuing theory, X.25, frame relay, SMDS, BISDN, ATM, TCP/IP, sockets, and Internet applications. PREREQ: CSC 335.

345 Programming Language Concepts and Paradigms (3) An examination of the conceptual underpinning of programming languages and of the paradigms into which they fall. Topics will be drawn from those comprising the field of programming language such as abstraction, bindings, concurrency, design, encapsulation, history, representation, storage, and types. Programming projects will focus on languages within the functional, declarative, and object-oriented paradigms - such as Common Lisp, ML, Prolog, CLOS - rather than the familiar imperative paradigm. PREREQ: CSC 220 and 241.

371 Computer Graphics (3) A mathematical approach to the construction and manipulation of prototypes for graphical display purposes, taking into consideration light source, reflexivity of surfaces, and color palates. Includes an elementary treatment of animation. PREREQ: CSC 220, 241, and MAT 211.

400 Internship (6) The student works in the area of computer science that is his or her specialty. PREREQ: Written approval of the internship director and a minimum grade of C- in each of the following courses: CSC 141, 142, 240, and 241 with a 2.50 GPA in CSC; MAT 151 and 161 with a 2.00 GPA in MAT.

402 Software Engineering (3) This course explores a variety of processes for developing software, including the PSP from the Software Engineering Institute, the SEI’s CMMI, and agile processes, including eXtreme Programming and Scrum. A special emphasis is on how software processes can be designed to help software engineers develop more secure code. Ethical, professional, and workplace issues are also covered, as well as strategies for testing software in PSP and agile environments. Teamwork is an important element in this course, and the teams work on developing a documented software process for their company. PREREQ: CSC 241.

416 Design and Construction of Compilers (3) Design and construction of compilers including lexical analysis; parsing techniques such as LL(1), LR, and LALR(1) code generation techniques. Error analysis and simple code optimizations will be introduced. A large-scale project consisting of developing a lexical analyzer, parser, abstract syntax tree, symbol table, activation code, and intermediate code generation, and finally generating assembly code will be implemented. PREREQ: CSC 220, 241, 242.

417 User Interfaces (3) This course deals with database-driven graphical user interface applications. The Model-View-Controller software paradigm is used as a guiding principle for the applications developed. The course features applications using Java-based as well as web-based components with a modern server-side scripting language such as PHP. Most of the course work is based on developing a complex, large-scale web database system with the goal of implementing this system within a web application framework. PREREQ: CSC 241.

481 Artificial Intelligence (3) Artificial Intelligence (AI) is concerned with the replication or simulation on a machine of the complex behaviors associated with intelligence. Topics will be drawn from any of those comprising the field of AI such as agent architectures, automatic truth maintenance, constraint satisfaction, expert systems, fuzzy logic, games, genetic algorithms, knowledge representation, machine learning, neural networks and connectionism, natural language processing, planning, reasoning, robotics, search, theorem proving, and vision. Projects requiring coding will focus on an AI language such as Common Lisp or Prolog. PREREQ: CSC 220 and 241.

490 Independent Project in Computer Science (3) The student designs and implements a software system. Project problems are drawn from local industry and university departments. A computer science faculty member supervises each project. PREREQ: Permission of instructor. Writing emphasis course.

495 Topics in Computer Science (3) Topic announced at time of offering. PREREQ: Permission of instructor.
This course may be taken again for credit.

496 Topics in Complex Large-Scale Systems (3) Topics in large-scale systems. Topics announced at the time of offering.

499 Independent Study in Computer Science (3) In conjunction with the instructor, the student selects study topics via literature search. PREREQ: Permission of instructor. Writing emphasis course.