Department of Computer Science

College of the Sciences and Mathematics

25 University Avenue, Room 150
610-436-2204
Department of Computer Science
James D. Fabrey, Chairperson

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 advisor to ensure that all requirements are being met.

All undergraduate students are held to the academic policies and procedures outlined in the undergraduate catalog.  Students are encouraged to review departmental handbooks for program tips, suggested course sequences, and explanations of procedures. When applicable, additional policies for specific department program(s) may be listed below.

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

Accelerated Program Policy

Refer to the Accelerated Programs page for more information.

Advanced Placement Credit

The following guidelines will be used to determine college credit when evaluating Advanced Placement scores in computer science.

Computer Science A or AB 3,4,5

Minimum Grades

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 CSC 142. This policy does not apply to courses that are taken as free electives. Entering majors must have completed CSC 141-CSC 142 and two of MAT 121, MAT 151, MAT 161.

Professors

Afrand Agah (2006)

Graduate Coordinator, Computer Science

B.S., Tehran Poly-Technique; M.S., Kansas State University; Ph.D., University of Texas at Arlington

Richard G. Epstein (1991)

B.A., George Washington University; M.S.E., University of Pennsylvania; Ph.D., Temple University

James D. Fabrey (1975)

Chairperson, Computer Science

A.B., Cornell University; Ph.D., Massachusetts Institute of Technology

Cheer-Sun D. Yang (2000)

B.S., M.B.A., Tamkang University; M.S., Kansas State University; Ph.D., University of Delaware

Associate Professors

Zhen Jiang (2002)

M.S., University of Reading; Ph.D., Temple University

Robert M. Kline (1991)

B.A., Millersville University; Ph.D., Washington University

Richard W. Wyatt (1989)

B.A., B.S., M.A., University of Melbourne; Ph.D., University of California, Berkeley; M.Sc., State University of New York at Buffalo

Assistant Professors

Richard Burns (2012)

B.A., Saint Joseph's University; M.A., Ph.D., University of Delaware

Si Chen (2016)

B.S., China Agricultural University; M.S., Ph.D., SUNY, Buffalo

Liu Cui (2016)

B.S., Northwestern Polytechnical University Xi'an China; M.S., Ohio University; Ph.D., University of Pittsburgh

CSC

CSC 110. Fundamentals in Computer Science. 3 Credits.

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, as well as a report on one of the first four areas above.
Gen Ed Attribute: Science Distributive Requirement.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

CSC 115. Introduction to Computer Programming. 3 Credits.

The art and science of computing are introduced using a structured programming language, such as Visual BASIC. Topics include looping, branching, arrays, and program development.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 141. Computer Science I. 3 Credits.

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.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 142. Computer Science II. 3 Credits.

This course introduces the design and implementation of classes and objects, arrays using primitive types and Strings, array of objects, sorting and searching through arrays, recursion, aggregate objects and an introduction to graphical User Interfaces (GUIs).
Pre / Co requisites: CSC 142 requires prerequisite of CSC 141.
Typically offered in Fall & Spring.

CSC 220. Foundations of Computer Science. 3 Credits.

Topics include regular and context free grammars and languages, computational logic, finite state machines, and parsing.
Pre / Co requisites: CSC 220 requires prerequisites of MAT 151 and MAT 161.
Typically offered in Fall & Spring.

CSC 240. Computer Science III. 3 Credits.

This course focuses on more advanced topics in object-oriented programming, including project design, planning, and testing using milestones and checklists. Programming topics include text processing (including 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 classes and linked lists.
Pre / Co requisites: CSC 240 requires prerequisites of CSC 142.
Typically offered in Fall & Spring.

CSC 241. Data Structures & Algorithms. 3 Credits.

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.
Pre / Co requisites: CSC 241 requires prerequisites of CSC 240 and MAT 151, MAT 161.
Typically offered in Fall & Spring.

CSC 242. Computer Organization. 3 Credits.

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 assemble language.
Pre / Co requisites: CSC 242 requires prerequisites of CSC 142 and MAT 151.
Distance education offering may be available.
Typically offered in Fall & Spring.

CSC 300. Cooperative Programming. 3 Credits.

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.
Pre / Co requisites: CSC 300 requires prerequisites of CSC 141 and CSC 142 and CSC 240 and CSC 241 and MAT 151 and MAT 161.
Typically offered in Fall, Spring & Summer.

CSC 301. Computer Security I. 3 Credits.

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.
Pre / Co requisites: CSC 301 requires a prerequisite of CSC 240.
Typically offered in Fall & Spring.

CSC 302. Computer Security II. 3 Credits.

Principles and current technological developments in computer security - a continuation of Computer Security I. Topics include: security requirements, attack models, cryptography, authentication, and system security. Students will also learn practical knowledge through hands-on lab experience.
Pre / Co requisites: CSC 302 requires successful completion of CSC 301.
Typically offered in Spring.

CSC 317. Visual Programming. 3 Credits.

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.
Pre / Co requisites: CSC 317 requires a prerequisite of CSC 240.
Typically offered in Spring.

CSC 321. Data Base Management Systems. 3 Credits.

Characteristics of generalized database management systems. Surveys of different database models that are currently used. The design and implementation of a database system.
Pre / Co requisites: CSC 321 requires prerequisites of CSC 142 and CSC 241.
Typically offered in Spring.

CSC 331. Operating Systems. 3 Credits.

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.
Pre / Co requisites: CSC 331 requires prerequisites of CSC 220 and CSC 240 and CSC 241 and CSC 242.
Typically offered in Fall.

CSC 335. Data Communications and Networking I. 3 Credits.

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.
Pre / Co requisites: CSC 335 requires prerequisites of CSC 240 and CSC 241.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

CSC 336. Data Communications and Networking II. 3 Credits.

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.
Pre / Co requisites: CSC 336 requires prerequisite of CSC 335.
Typically offered in Spring.

CSC 345. Programming Language Concepts/Paradigms. 3 Credits.

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.
Pre / Co requisites: CSC 345 requires a prerequisite of CSC 220 and CSC 241.
Typically offered in Fall.

CSC 400. Internship. 6 Credits.

The student works in the area of computer science that is his or her specialty.
Pre / Co requisites: CSC 400 requires prerequisites of CSC 141 and CSC 142 and CSC 240 and CSC 241 and MAT 151 and MAT 161.
Consent: Permission of the Department required to add.
Typically offered in Fall, Spring & Summer.

CSC 402. Software Engineering. 3 Credits.

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 to 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 team work on developing a documented software process for their company.
Pre / Co requisites: CSC 402 requires prerequisite of CSC 241.
Typically offered in Fall & Spring.

CSC 416. Design/Construction Compilers. 3 Credits.

Covers the basic topics in compiler design including lexical analysis, syntax analysis, error handling, symbol tables, intermediate code generation, and some optimization. Programming assignments will build various pieces of a compiler for a small language.
Pre / Co requisites: CSC 416 requires prerequisites of CSC 220 and CSC 240 and CSC 241 and CSC 242.
Typically offered in Fall.

CSC 417. User Interfaces. 3 Credits.

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 components 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.
Pre / Co requisites: CSC 417 requires prerequisites of CSC 241.
Typically offered in Spring.

CSC 481. Artificial Intelligence. 3 Credits.

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.
Pre / Co requisites: CSC 481 requires prerequisites of CSC 220 and CSC 241.
Typically offered in Fall.

CSC 490. Independent Project in Computer Science. 3 Credits.

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.
Consent: Permission of the Department required to add.
Gen Ed Attribute: Writing Emphasis.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CSC 495. Topics in Computer Science. 3 Credits.

Topic announced at time of offering.
Consent: Permission of the Department required to add.
Typically offered in Summer.
Repeatable for Credit.

CSC 496. Topics in Complex Large-Scale Systems. 3 Credits.

Topics in large scale systems. Topics announced at the time of offering.
Typically offered in Fall.
Repeatable for Credit.

CSC 499. Independent Study in Computer Science. 3 Credits.

In conjunction with the instructor, the student selects study topics via literature search.
Consent: Permission of the Department required to add.
Gen Ed Attribute: Writing Emphasis.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CST

CST 199. Transfer Credits. 1-9 Credits.

Transfer Credits.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CST 211. Security and Ethics in IT. 3 Credits.

This course introduces fundamental security issues in InformationTechnology.

CST 221. Database Systems. 3 Credits.

This course introduces students to the role of databases in information technology.
Typically offered in Fall.

CST 235. Network and System Administration. 3 Credits.

This course introduces the fundamentals of networks and systems administration.
Typically offered in Spring.

CSW

CSW 101. Introduction to Computers. 3 Credits.

A course 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.

CSW 116. Computer Programming Laboratory. 3 Credits.

This is a special winter session course introducing foundations of Computer Science, with the goal of prompting student's interest and programming skills. Topics include, but not limited to: data processing and analysis, UML design, Visual Basic programming, Database system, network system, etc.

CSW 131. Introduction to Web Design. 3 Credits.

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.
Typically offered in Fall, Spring & Summer.

CSW 199. Computer Science Transfer Elective. 1-15 Credits.

Transfer Credits.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CSW 315. Introduction to Web Programming. 3 Credits.

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. For non-majors only. This can be used as a capstone fulfillment.
Pre / Co requisites: CSW 315 requires prerequisites of CSW 131 and CSC 115.
Typically offered in Fall & Spring.