Computer Science, M.S.

Image Caption

College of Arts and Sciences

Department of Computer Science

Science & Technology 318

570-422-3666

www.esu.edu/cpsc

Faculty

Graduate Coordinator:

Dongsheng Che, Ph.D., dche@esu.edu

Professors:

Mary DeVito, Ph.D., mdevito@esu.edu

Haklin Kimm, Ph.D., hkimm@esu.edu

Robert Marmelstein, Ph.D., Chair, rmarmelstein@esu.edu

N. Paul Schembari, Ph.D., schembari@esu.edu

Associate Professors:

Dongsheng Che, Ph.D., dche@esu.edu

Christine Hofmeister, Ph.D., chofmeister@esu.edu

Michael Jochen, Ph.D., mjochen@esu.edu

Eun-Joo Lee, Ph.D., elee@esu.edu

Assistant Professors:

James Emert, M.A., jemert@esu.edu

Master of Science in Computer Science

  • 30 credits – Thesis track

    33 credits – Non-thesis track

    Purpose of degree

    The purpose of the degree is to prepare students for technical leadership roles which requiring greater knowledge, skills and responsibility than would the bachelor’s degree. The program provides advanced, in-depth instruction on cutting-edge computer science areas such as machine learning, parallel computing, and computer security. It develops skills, such as the ability to perform independent research, which are essential to success in the computer technology field. The program also provides excellent preparation for those wishing to enter a Ph.D. program.

    Mission statement of the department

    The mission of the Computer Science Department is to prepare students to become successful computer science problem solvers.

    Special resources of the department

    The Computer Science Department has modern, well-equipped laboratories and an active externally funded research program.

    Program of Study

    Undergraduate prerequisites required:

    To be admitted as a full-status graduate student, applicants should have a B.S. in computer science or a closely related field. If not, students must obtain the foundational computer science skills and mathematical knowledge that are equivalent to the following ESU courses:

    CPSC 130

    Introduction to Computer Programming I

    CPSC 131

    Introduction to Computer Programming II

    CPSC 141

    Introduction to Computer Organization

    CPSC 230

    Programming Principles and Practice

    CPSC 232

    Introduction to Assembler Programming

    CPSC 250

    Data Structures and Algorithms

    CPSC 321

    Issues in the Practice of Computer Science

    CPSC 330

    Programming Languages

    CPSC 340

    Operating Systems Concepts and Design

    MATH 140

    Calculus and Analytic Geometry-I

    MATH 141

    Calculus and Analytic Geometry-II

    MATH 220

    Discrete Mathematical Structures

    MATH 311

    Statistics

    MATH 320

    Linear Algebra

    Course descriptions are available in the undergraduate catalog.

    Typical time to finish

    The equivalent of two years of full-time study is usually required.

    Illustrative plan of study

    There are two options for the Master of Science in Computer Science: a thesis option and a non-thesis programming language option. For either option, the degree candidate must select a minimum of 18 credits of courses open only to graduate students.

    Option I – Thesis Option – 30 Semester Hours

    Programming Languages Area

    Required:

    CPSC 530

    Software Engineering

    3 credits

    At least one of the following:

    CPSC 531

    Advanced Topics in Software Engineering

    3 credits

    CPSC 532

    Natural Language Processing

    3 credits

    CPSC 533

    Compiler Construction

    3 credits

    CPSC 535

    Parallel Computing

    3 credits

    Operating Systems/Architecture Area

    Required:

    CPSC 541

    Computer Architecture

    3 credits

    At least one of the following:

    CPSC 542

    Operating Systems Design

    3 credits

    CPSC 544

    Realtime Systems

    3 credits

    CPSC 545

    Networking and Data Communication

    3 credits

    CPSC 547

    Distributed Object Programming

    3 credits

    CPSC 548

    Applied Network Security

    3 credits

    Theory

    At least one of the following:

    CPSC 562

    Theory of Computation

    3 credits

    CPSC 563

    Theory of Abstract Languages

    3 credits

    Data/File Structures

    At least one of the following:

    CPSC 550

    Algorithmic Graph Theory

    3 credits

    CPSC 553

    Database Systems

    3 credits

    CPSC 554

    Data Structures and Algorithmic Analysis

    3 credits

    Topics/Electives

    At least one additional course numbered 520 or higher.

    Culminating Activities

    Required:

    CPSC 570

    Introduction to Research

    3 credits

    CPSC 574

    Research Project I

    3 credits

    CPSC 575

    Research Project II

    3 credits

    A Thesis Defense

    Option II – Non-Thesis Option – 33 Semester Hours

    Programming Languages Area

    Required:

    CPSC 530

    Software Engineering

    3 credits

    At least one of the following:

    CPSC 531

    Advanced Topics in Software Engineering

    3 credits

    CPSC 532

    Natural Language Processing

    3 credits

    CPSC 533

    Compiler Construction

    3 credits

    CPSC 535

    Parallel Computing

    3 credits

    Operating Systems/Architecture Area

    Required:

    CPSC 541

    Computer Architecture

    3 credits

    At least one of the following:

    CPSC 542

    Operating Systems Design

    3 credits

    CPSC 544

    Realtime Systems

    3 credits

    CPSC 545

    Networking and Data Communication

    3 credits

    CPSC 547

    Distributed Object Programming

    3 credits

    CPSC 548

    Applied Network Security

    3 credits

    Theory

    At least one of the following:

    CPSC 562

    Theory of Computation

    3 credits

    CPSC 563

    Theory of Abstract Languages

    3 credits

    Data/File Structures

    At least one of the following:

    CPSC 550

    Algorithmic Graph Theory

    3 credits

    CPSC 553

    Database Systems

    3 credits

    CPSC 554

    Data Structures and Algorithmic Analysis

    3 credits

    Topics/Electives

    At least three additional courses numbered 520 or higher.

    Culminating Activities

    Required:

    CPSC 570

    Introduction to Research

    3 credits

    CPSC 574

    Research Project I

    3 credits

    A Comprehensive Oral Exam

    No graduate student who has an A, B, or incomplete grade in a graduate course may re-enroll for credit in the course for a second time without approval of the department chair and the department graduate coordinator.

    Admission requirement and deadlines

    Graduate school requirements and deadlines apply.

    Graduate Independent Study

    You may take Graduate Independent Study to fulfill part of your electives, which allows the student to pursue special topics beyond regular courses. It cannot cover the same topic as your project or thesis. The application must include a study plan and objectives, and needs to be approved by a supervising fulltime faculty member and the department.

    Graduate Assistantships

    Graduate Assistantships (GAs) are available through the department. These are awarded based upon merit and achievement to full-time students in the graduate program. GAs do not teach classes, but complete projects and tasks assigned by professors.

    The GA is awarded for the first year of full-time study, with the possibility of extension through the first summer. Prospective students should apply for a graduate assistantship at the time of original application to the program, using the application form online.

    For more information, contact the department chair and/or graduate coordinator at 570-422-3666.

Course Descriptions

  • CPSC 521 Computer Graphics (3:3:0)

    • This course is an introduction to computer graphics. Basic principles for design, use, and understanding of graphics systems will be studied. Algorithms for creating and manipulating graphic displays and a standard programming language for their implementation will be presented. There will be programming practice. Prerequisite: Ability to program in "C" or "C++".

  • CPSC 523 Discrete Optimization Algorithms (3:3:0)

    • This course introduces students to dynamic, linear, and integer programming algorithms. There will be programming practice involving these algorithms.

  • CPSC 525 Expert Systems (3:3:0)

    • This course is an introduction to knowledge-based systems. Basic concepts, characteristics, architectures, and tools will be studied. Major paradigms for synthesis and analysis class systems, and exact and inexact reasoning systems will be discussed. Computational and knowledge engineering issues will be treated by case studies and there will be programming practice.

  • CPSC 527 Robotics (3:3:0)

    • This course is an introduction to robotics on a technical level. The history of robotics, computer-aided manufacturing, robot components, sensors, programming systems, applications, and future implications of robotics technology will be studied. There will be hands-on experience with a robot.

  • CPSC 528 Artificial Intelligence and Heuristic Programming (3:3:0)

    • This course is an introduction to artificial intelligence and heuristic programming techniques. Search strategies, games, heuristic mechanisms, and automated deduction will be studied. There will be programming practice. For graduate credit, a student will be required to write a term paper or execute a project which reflects deeper investigation of the topics covered in the course.

  • CPSC 529 Machine Learning (3:3:0)

    • This course is an introduction to techniques which enable software to improve its performance over time. History and classic experiments will be presented. Programs will be studied which perform rote learning, learn by being told, learn by analogy, learn from examples (induction), and learn by observation and discovery. There will be some programming practice.

  • CPSC 530 Software Engineering (3:3:0)

    • This course is a study of the principles of software engineering and various programming methodologies as applied to the development of large, complex software systems. Top-down, structured design and programming will be emphasized. There will be practice in the construction of a large software system. This course is usually offered in the Fall. This is a programming intensive course. Prerequisites: MATH 311, CPSC 111, 251, 330.

  • CPSC 531 Advanced Topics in Software Engineering (3:3:0)

    • This course will introduce the students to the current theoretical models and approaches used in the design, construction, and management of large, complex systems with long life cycles. Topic areas include requirements specification, design, configuration management, technical reviews, quality assurance, testing, and metrics. Case studies will be undertaken to compare the various approaches. Prerequisite: CPSC 530.

  • CPSC 532 Natural Language Processing (3:3:0)

    • This course is an introduction to natural language processing in Computer Science. There will be a review of elementary text, tree, and graph processing, and an introduction to syntactic and semantic processing. For syntax, Backus-Naur form grammars, sentence generation/recognition, augmented transition networks, and parsing strategies will be studied. For semantics, case grammar theory, and parsing strategies will be studied. There will be case studies of current systems as well as programming practice. For graduate credit, a student will be required to write a term paper or execute a project.

  • CPSC 533 Compiler Construction (3:3:0)

    • This course is an introduction to the methods and techniques involved in translating high-level languages, such as "C," into executable machine code. Lexical scanning, parsing, symbol table construction, object code generation, and optimization will be studied and a compiler will be written. For graduate credit, a student will be required to write a term paper or execute a project which reflects deeper investigation of the topics covered in the course.

  • CPSC 535 Parallel Computing (3:3:0)

    • This course is an introduction to parallel computing, a rapidly growing area of computer science. Principles of parallel computer architecture and parallel algorithms for various applications will be studied. There will be practice in parallel programming. Prerequisites: CPSC 251, 541, MATH 320.

  • CPSC 541 Computer Architecture (3:3:0)

    • This course involves the study of computer systems structure, organization, implementation, and performance. Von-Neumann machines, from the early EDVAC to current microprocessors will be considered. Parallel processors and other specialized architectures will also be studied.

  • CPSC 542 Operating System Design (3:3:0)

    • This course will thoroughly examine the principles of the design of computer operating systems. Emphasis will be placed on process allocation and scheduling, concurrent programming, memory management, device management, file management, and protection. How the principles are implemented in an existing operating system will be examined.

  • CPSC 543 Mobile Computing (3:3:0)

    • This course provides students with an introduction to the state of art in mobile computing. Topics will include the fundamentals of mobile computing: architecture and devices, operating systems, wireless networks, algorithms and protocols, location-aware and context-aware services, etc. The students are expected to design, develop, implement and evaluate mobile computing applications.

  • CPSC 544 Real Time Systems (3:3:0)

    • This course is an introduction to the problems, concepts, and techniques involved in computer systems which must monitor and control external devices or events. This includes techniques and hardware for data collection and control functions. Applications discussed will include microprocessor- controlled intelligent devices and process control. For graduate credit, a student will be required to write a term paper or execute a project which reflects deeper investigation of the topics covered in the course.

  • CPSC 545 Networking and Data Communications (3:3:0)

    • This course gives students a foundation in the study of data communications and computer networking. Topics covered will include basic data communications, Open Systems Interconnect (OSI) Model, Local Area Networks (LAN) and common communications standards. For graduate credit a student will be required to write a term paper or execute a project which reflects deeper investigation of the topics covered in the course.

  • CPSC 546 Embedded Systems (3:3:0)

    • This course provides students with an introduction to contemporary aspects of embedded-system hardware and software. Topics will include the fundamentals of embedded systems: hardware and software architectures, design methodologies and tools, communication algorithms and protocols. The students are exposed to case-studies of various embedded applications: vehicle networks, space system, networked sensors, personal computing devices and home appliances, etc.

  • CPSC 547 Distributed Object Programming (3:3:0)

    • This course is intended for students who are interested in understanding and developing application projects with an object-oriented programming language such as Java in distributed computing environments. The course begins with a brief introduction to object technology with programming and introduction to computer networking, and is followed by understanding and developing programs in the server/client model, Remote Method Interface (RMI), and Common Object Request Broker Architecture (CORBA). For graduate credit a student will be required to write a term paper or execute a project which reflects deeper investigation of the topics covered in the course.

  • CPSC 548 Applied Network Security (3:2:2)

    • This course builds on the foundation laid in CPSC 445 or 545 by providing in-depth laboratory and classroom exercises using commercial-off-the-shelf (COTS) technology. Students will configure network servers, routers, hubs, firewalls and intrusion detection devices to discover the effect each device can have on overall system security. In-class exercises guide discussions while student projects reinforce subject matter. Students will complete a research project in network security. Prerequisite: CPSC 445 or CPSC 545.

  • CPSC 550 Algorithmic Graph Theory (3:3:0)

    • This course is an algorithmic approach to the mathematical theory of graphs and their applications. Path problems, covers, network flows and other problems will be formulated in graph theoretical terms and solutions will be programmed. This course is usually offered in alternate years. This is a programming intensive course. Prerequisites: CPSC 111, 251.

  • CPSC 553 Database Systems (3:3:0)

    • This course is an introduction to the management of large volumes of interrelated data through integrated database management software. Topics discussed will include relationships between data items, effects of redundancy and database design. Representative examples of the relational and network approaches to database management will be examined. For graduate credit, a student will be required to write a term paper or execute a project which reflects deeper investigation of the topics covered in the course.

  • CPSC 554 Data Structures and Algorithm Analysis (3:3:0)

    • This course will analyze a variety of algorithms from the standpoint of what data structures are used and how they are implemented. Students will be introduced to the classes of NP-hard and NP-complete problems and to the theories of complexity analysis.

  • CPSC 560 Applied Computer Cryptography (3:3:0)

    • The focus of this course is developing computer algorithms for generating random numbers, symmetric and asymmetric ciphers, and cryptographic keys. Programming assignments of stream and block ciphers will reinforce ideas covered in CPSC 325. Students will be required to write basic public-key cryptography code as a final project. Prerequisites: CPSC 251 and 325, MATH 220.

  • CPSC 561 Legal Impacts of Computer Security Solutions (3:3:0)

    • This online course in computer security focuses on the ethical and legal rationale behind the technical solutions studied in CPIS 511. Criminal, civil, regulatory and intellectual property law will be discussed in the context of professional computer environments. Federal and State computer security statutes will guide discussions. Student reports and presentations will reinforce the subject matter. This course may not be used as an elective by Computer Science Master's candidates. Co-requisite: CPIS 511. Prerequisite: Permission of the Information Security Graduate Coordinator.

  • CPSC 562 Theory of Computation (3:3:0)

    • This course will introduce abstract counterparts of physical machines and algorithms. Turing machines and other automata will be presented. The notions of algorithms, computability and insolvability will be rigorously defined and studied. Some problems not solvable by instruction-obeying machines will be examined.

  • CPSC 563 Theory of Abstract Languages (3:3:0)

    • This course is an introduction to sets of strings of symbols, their representations, structures, and properties. Abstract languages, formal grammars, productions, the Chomsky hierarchy, generation and recognition mechanisms for languages, and the relationship of formal languages to automata will be studied.

  • CPSC 570 Introduction to Research (3:3:0)

    • This course will introduce the student to the professional (open) literature as well as other sources in computer science. The student will investigate an area or problem and assimilate, integrate, and present the findings in a scholarly seminar. This course may be taken more than once with approval of the department. Prerequisite: At least one course successfully completed at the graduate level in Computer Science.

  • CPSC 574 Research Project I (3:3:0)

    • This course will provide practical experience in applying computing techniques and methodologies from a number of different areas and over an extended period time. The student will analyze, design, evaluate and apply new research findings or technological advances, develop a final product and present the work in a formal, oral presentation. Prerequisite: CPSC 570.

  • CPSC 575 Research Project II (3:3:0)

    • This course is a continuation of CPSC 574 P Research Project-I.

  • CPSC 577 Independent Study in Computer Science (Semester hours arranged)

    • Under the auspices of a qualified member of the faculty, the student pursues study and research related to professional knowledge and understanding in Computer Science. Topics must be established prior to enrollment. Prerequisites: Permission of the faculty member and the department.