Department of Computer Science

25 University Avenue, Room 150
610-436-2204
Department of Computer Science
Richard Burns, Chairperson
Si Chen, 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)

Assistant Chairperson, 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)

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

Assistant Professors

Md Amiruzzaman (2021)

Graduate Coordinator, Computer Science

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: Digital Literacy Pathway, Science Distributive

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: Digital Literacy Pathway, Science Distributive

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

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

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

Distance education offering may be available.

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

CSC 142 Prerequisite: CSC 141 with minimum grade of D-.

Distance education offering may be available.

CSC 199. Computer Science Transfer Credits. 1-10 Credits.

Transfer Credits

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.

CSC 220 Prerequisite: MAT 151 and MAT 161, with minimum grades of D-.

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.

CSC 231 Prerequisite: CSC 142 and MAT 151, with minimum grades of D-.

Distance education offering may be available.

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.

CSC 240 Prerequisite: CSC 142 with minimum grade of D-.

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.

CSC 241 Prerequisite: CSC 240, MAT 151, and MAT 161, with minimum grades of D-.

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.

CSC 242 Prerequisite: CSC 142 and MAT 151, with minimum grades of D-.

Distance education offering may be available.

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.

CSC 300 Prerequisite: CSC 141, CSC 142, CSC 240, CSC 241, MAT 151, and MAT 161, with minimum grades of D-.

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.

CSC 301 Prerequisite: Successful completion of three CSC, CST, or CSW courses with minimum grades of D-.

Gen Ed Attribute: Ethics Requirement

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.

CSC 302 Prerequisite: CSC 301 and CSC 335, with minimum grades of D-.

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.

CSC 317 Prerequisite: CSC 240 with minimum grade of D-.

Distance education offering may be available.

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.

CSC 321 Prerequisite: CSC 142 and CSC 241, with minimum grades of D-.

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.

CSC 331 Prerequisite: CSC 220, CSC 240, and CSC 241; and CSC 231 or CSC 242, with minimum grades of

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.

CSC 335 Prerequisite: CSC 240 with minimum grade of D-.

Distance education offering may be available.

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.

CSC 345 Prerequisite: CSC 220 and CSC 241, with minimum grades of D-.

CSC 381. Data Science. 3 Credits.

This course will introduce data science and related programming concepts. The course includes basic statistics, an intro to machine learning, and an intro to data visualization. Students will learn how to read different types of data files and use statistical tools and machine learning tools to analyze them. Also, they will use basic data visualization techniques to present the result to help in decision-making. A programming language, such as, Python will be used in the class to help students develop understanding of the above concepts.

CSC 381 Prerequisite: Successful completion of CSC 231, CSC 240, or CSC 241, with minimum grade of D-, or junior standing.

Distance education offering may be available.

CSC 400. Internship. 6 Credits.

The student works in the area of computer science that is his or her specialty.

CSC 400 Prerequisite: CSC 141, CSC 142, CSC 240, CSC 241, MAT 151, and MAT 161, with minimum grades of D-.

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.

CSC 402 Prerequisite: Successful completion of CSC 241 with minimum grade of D-.

Distance education offering may be available.

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

CSC 404 Prerequisite: CSC 240 and CSC 241, with minimum grades of D-.

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.

CSC 416 Prerequisite: CSC 220, CSC 240, CSC 241, and CSC 242, with minimum grades of D-.

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.

CSC 417 Prerequisite: Successful completion of CSC 241 with minimum grade of D-.

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.

CSC 418 Prerequisite: Successful completion of CSC 240 with minimum grade of D-.

Distance education offering may be available.

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.

CSC 466 Prerequisite: Successful completion of CSC 231 and CSC 241, with minimum grades of D-.

Distance education offering may be available.

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.

CSC 467 Prerequisite: Successful completion of CSC 241 with minimum grade of D-.

Distance education offering may be available.

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.

CSC 468 Prerequisite: Successful completion of CSC 231 with minimum grade of D-.

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.

CSC 471 Prerequisite: Successful completion of CSC 231 or CSC 242; and CSC 302, all with minimum grades of D-.

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.

CSC 472 Prerequisite: Successful completion of CSC 231 or CSC 242; and CSC 302, all with minimum grades of D-.

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.

CSC 476 Prerequisite: Successful completion of CSC 241 with minimum grade of D-.

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.

CSC 481 Prerequisite: Successful completion of CSC 220 and CSC 241, with minimum grades of D-.

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.

Gen Ed Attribute: Writing Emphasis (select both)

Repeatable for credit.

CSC 495. Topics in Computer Science. 3 Credits.

Topic announced at time of offering.

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.

Repeatable for credit.

CSC 497. Topics in Computer Security. 3 Credits.

Topic in computer security announced at time of offering.

CSC 497 Prerequisite: Successful completion of CSC 242 with minimum grade of D-.

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.

Gen Ed Attribute: Writing Emphasis (select both)

Repeatable for credit.

CST

CST 199. Computer Science-Technology Transfer Credits. 1-9 Credits.

Transfer Credits

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.

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.

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.

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

Transfer Credits

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.

CSW 315 Prerequisite: Successful completion of CSC 115 and CSW 131, with minimum grades of D-.