Department of Computer Science

College of the Sciences and Mathematics

25 University Avenue, Room 150
610-436-2204
Department of Computer Science
Richard Burns, Chairperson
Linh Ngo, Assistant 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 their 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 programs may be listed below.

Special Entrance Requirements

Students who enter WCU as first year 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

Visit the Registrar’s website for information on how course credit for success on AP exams in computer science is awarded.

Minimum Grade Policy

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 121MAT 151MAT 161.

Professors

Afrand Agah (2006)

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

Richard Burns (2012)

Chairperson, Computer Science

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

Zhen Jiang (2002)

B.S., Shanghai Jiaotong University; M.S., Nanjing University; Ph.D., Florida Atlantic University

Cheer-Sun D. Yang (2000)

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

Associate Professors

Si Chen (2016)

Graduate Coordinator, Computer Science

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

Linh B Ngo (2018)

Assistant Chairperson, Computer Science

B.S., M.S., Ph.D., University of Arkansas

Assistant Professors

Md Amiruzzaman (2021)

B.S., National University, Gajipur, Bangladesh; M.S., Ph.D., Kent State University

Ashik Ahmed Bhuiyan (2021)

B.S., Bangladesh University of Engineering and Technology; Ph.D., University of Central Florida

David G. Cooper (2021)

B.S., Carnegie Mellon University; M.S., Ph.D., University of Massachusetts Amherst

Jongwook Kim (2020)

B.S., Korea University; M.S., Ph.D., University of Texas at Austin

CSC

CSC 110. Fundamentals in Computer Science. 3 Credits.

Introduction to the fundamentals of computer science. 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 (writing computer programs).
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 112. Programming & Data Science. 3 Credits.

Introduction to the fundamentals of business computing. Topics include surveys of the following sub-areas of computer science: hardware/operating systems, programming languages/software, ethics/social issues, problem solving, and advanced MS Excel and Scratch programming for business use. The course includes laboratory projects in MS Excel and Scratch.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 115. Introduction to Computer Programming. 3 Credits.

The art and science of computing are introduced using an object-oriented programming language, such as Python. Topics include looping, branching, arrays, and program development.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall & Spring.

CSC 116. Computational Thinking for Problem Solving. 3 Credits.

This course provides an introduction to problem solving and programming using Python. Computational thinking is an approach to solve problems using concepts and ideas from computer science and express solutions in a way that can be run on a computer. Topics covered in this course include (1) four pillars of computational thinking, namely decomposition, pattern recognition, data representation and abstraction, algorithms; (2) fundamental operations of a modern computer; (3) basic algorithms in computer science; and (4) programming using Python.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall & Spring.

CSC 141. Computer Science I. 3 Credits.

An introduction to programming using Python. Topics covered include basic program design; program flow including decisions, functions, and loops; command line and file input/output; variables and types; and string and sequence processing.
Gen Ed Attribute: Science Distributive Requirement.
Distance education offering may be available.
Typically offered in Fall, Spring, Summer, Winter.

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 a prerequisite of CSC 141.
Distance education offering may be available.
Typically offered in Fall, Spring, Summer, Winter.

CSC 199. Transfer Credits. 1-10 Credits.

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

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 231. Computer Systems. 3 Credits.

This course introduces the fundamental concepts of modern computer systems. Coverage includes an introduction to CPUs, memory, storage, networking, operating systems, and parallel and distributed programming. Assembly language and C will be introduced and used to explore how computer systems interpret and execute programs.
Pre / Co requisites: CSC 231 requires prerequisites of CSC 142 and MAT 151.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

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 & Summer.

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 & Ethics. 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 prerequisites of three CSC, CST, or CSW courses.
Gen Ed Attribute: Ethics Requirement.
Typically offered in Fall & Spring.

CSC 302. Computer Security. 3 Credits.

This course will provide an introduction to critical and diverse topics in computer security, such as cryptography, network security, and operating systems security.
Pre / Co requisites: CSC 302 requires prerequisites of CSC 301 and CSC 335.
Typically offered in Fall & Spring.

CSC 317. Introduction to Digital Image Processing. 3 Credits.

This course focuses on fundamental concepts about the visualization of various data in the disciplines of digital image processing, computer graphics, photometric processing, and image analysis. The application of python programming will also prepare students for learning Computer Vision and Machine Learning in the future. This course will focus on mathematical foundations and graphic tools including Matplotlib (a graphic plotting library) and OpenCV (an image processing and analysis library for Computer Vision). Some fundamental definitions about image processing or analysis will be introduced.
Pre / Co requisites: CSC 317 requires prerequisites of CSC 240.
Distance education offering may be available.
Typically offered in Fall & 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 Fall & 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 231 or 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 a prerequisite of CSC 240.
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, and CLOS rather than the familiar imperative paradigm.
Pre / Co requisites: CSC 345 requires prerequisites of CSC 220 and CSC 241.
Typically offered in Fall & Spring.

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 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 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 classes and linked list. This is the required Capstone course for the program/major.
Pre / Co requisites: CSC 402 requires a prerequisite of CSC 241.
Typically offered in Fall & Spring.

CSC 404. Software Testing. 3 Credits.

This course consists of two components: software engineering and software testing. Software testing is a critical phase in the software development life cycle for the quality assurance of software. This course will take a practitioner's approach. Students will use hands-on labs to learn Node.js when we cover the principles of software testing. Testing theory topics may include: Math for testing engineers (discrete math, graph theory), Testing Categories (unit testing, integration testing, system testing, load testing, functional testing, and retrospective testing), Testing Approaches (white-box testing, black-box testing), and Testing Methodologies (boundary value testing, domain testing, equivalence class testing, decision-table-based testing, path testing, and data flow testing).
Pre / Co requisites: CSC 404 requires prerequisites of CSC 240 and CSC 241.
Typically offered in 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 231 or 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 418. Modern Web Applications Using Server-Side Technologies. 3 Credits.

This course provides training in the area of building web applications using Node.js (with Express, and MongoDB) for the back-end and EJS for the front-end user interface. JavaScript has been a client-side script programming language until later in 2009 when Google combined its V8 search engine with Node.JS. Since then, JavaScript has become a full-stack scripting language from the client-side to the server-side. Starting from building a web site without programming, students will be guided with hands-on labs and develop a website using Node.JS and EJS for the front-end.
Pre / Co requisites: CSC 418 requires a prerequisite of CSC 240.
Distance education offering may be available.
Typically offered in Winter.

CSC 466. Distributed and Parallel Computing. 3 Credits.

This course introduces students to modern distributed platforms by examining several important technologies in the areas of parallel and distributed computing and how these technologies help in solving computational and data-intensive problems. Students will apply specific trade-offs for parallel application and algorithms development, performance, and management on different distributed platforms.
Pre / Co requisites: CSC 466 requires prerequisites of CSC 231 and CSC 241.
Distance education offering may be available.
Typically offered in Spring.

CSC 467. Big Data Engineering. 3 Credits.

This course will investigate engineering approaches in solving challenges in data-intensive and big data computing problems. Course topics include distributed tools and parallel algorithms that help with acquiring, cleaning, and mining very large amount of data, including streaming data.
Pre / Co requisites: CSC 467 requires a prerequisite of CSC 241.
Distance education offering may be available.
Typically offered in Winter.

CSC 468. Introduction to Cloud Computing. 3 Credits.

This course provides an introductory overview to the technologies that enable cloud computing. Topics covered include basic concepts about cloud computing and advanced technical concepts regarding virtualization, containerization, and orchestration.
Pre / Co requisites: CSC 468 requires a prerequisite of CSC 231.
Typically offered in Spring.

CSC 471. Modern Malware Analysis. 3 Credits.

This course will introduce students to modern malware analysis techniques through lectures and hands-on interactive analysis of real-world samples, including exploring various recent attacks. These examples and studies will help the students develop a foundation and a well-rounded view of cybersecurity research. Participants in the course will also read and discuss research papers, as well as conducting an independent project in a topic related to cyber risk and malware analysis. After taking this course students will be equipped with the skills to analyze advanced contemporary malware using both static and dynamic analysis.
Pre / Co requisites: CSC 471 requires prerequisites of CSC 231 or CSC 242, and CSC 302.
Typically offered in Spring.

CSC 472. Software Security. 3 Credits.

This course is primarily aimed at people interested in software security, reverse engineering, and low-level software. In this course, students will explore the foundations of software security. They will consider important software vulnerabilities and attacks that exploit them--such as buffer overflows, SQL injection, and session hijacking--and they will consider defenses that prevent or mitigate these attacks, including advanced testing and program analysis techniques.
Pre / Co requisites: CSC 472 requires prerequisites of CSC 231 or CSC 242, and CSC 302.
Typically offered in Fall.

CSC 476. Game Development. 3 Credits.

This project-based course is concerned with game development and scripting using a modern game engine, such as Unity, with a modern programming language, such as C#. Topics include coding standards, design principles, debugging, game loops, physics engines, lighting, meshes, colliders, databases for persisting data, game lobbies, networked multiplayer games, and building for multiple resolutions and platforms. Individual and team-based assignments will utilize version control.
Pre / Co requisites: CSC 476 requires a prerequisite of CSC 241.
Typically offered in Fall.

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, Winter.
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 497. Topics in Computer Security. 3 Credits.

Topic in computer security announced at time of offering.
Pre / Co requisites: CSC 497 requires a prerequisite of CSC 242.
Typically offered in Fall & Spring.
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, Winter.
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 is an entry level course that serves as an introduction to network technologies (computer and cellular networks, the Internet, the Internet of Things, etc.). It requires a minimum level of programming and math. The objective of this course is to provide a broad overview of networking technologies with a focus on the TCP/IP model and includes Cisco device related labs. The course introduces concepts in data communications, Internet technologies and basic system performance analysis. Concepts covered included TCP/IP, LANs, WANs, internetworking, signals, communications media, routers, and switches.
Distance education offering may be available.
Typically offered in Spring.

CSW

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

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 Spring.