Computer Science Course Offerings

Kutztown University offers a wide range of courses for Computer Science majors and minors. 

Descriptions for Computer Science courses can be found by following the links below:

  • 100 Level and Lower Computer Science Courses

    CSC 5 - Visualization for the Masses

    3 sh

    Have you ever wondered how computers are used to make data look interesting and more easily understood? That is a process carried out by computers that can make any data more understandable and approachable. The interesting thing about this process is that it can be done by virtually anyone - even people who have little experience with computers. This is a course that teaches the student about the different kinds of visualizations and also how to create them. Reading charts, graphs, and more complex visualizations is an important skill to have while knowing how to make these is also an important skill. 

    Prerequisites: None.

    CSC 20 - Computer Graphics

    3 sh

    This course introduces students to designing visual compositions using image-manipulation and illustration-capture software. Topics include image editing, typography, and layout as well as creative design theory and critical analysis.

    Prerequisite: None.

    CSC 101 - Computer Applications

    3 sh

    This course provides an overview of essential computer concepts and file management, followed by coverage of software applications, including word processing, spreadsheets, and presentations. Students will learn current versions of these software applications.

    Prerequisite: None.

    CSC 111 - Computer Forensics

    3 sh

    This course is an introduction to the basic concepts of computer forensics.  It will teach the student how to identify, preserve, recover, analyze and document data on a computer or network allegedly used to commit a crime.  Topics include computer architecture, operating systems, encryption/decryption, preserve and document evidence, and analyzing computers and networks for evidence.  

    Prerequisite: Any math course.

    CSC 112 - Visual Basic Programming

    3 sh

    This course is designed to help the student develop sound programming methodology using the Visual Basic language and to gain an understanding of the key concepts in computer science. Topics include the Visual Basic development environment, GUI interfaces, the software development cycle, basics of the language, selection, repetition, functions, subroutines, one and two-dimensional arrays, and processing string data.  An event-driven approach to programming is used. 

    Prerequisite: None.

    CSC 120 - Introduction to Creative Graphical Coding

    3 sh

    This course is for students who want to go beyond using prepackaged software tools for editing graphical images. Students will create interactive images, videos, and multimedia compositions using a programming language specifically designed for these applications. Projects include the program-driven display of basic shapes and imported images, display properties such as texture and shading, display-time image composition, generative art, interaction with user gestures, three-dimensional graphics, animation, video, and additional topics as time allows. The programming environment includes extensive language and library support for these activities while simplifying the steps in introductory programming. There will be solo and/or team projects.

    Prerequisite: None.

    CSC 122 - Website Design

    3 sh

    This course introduces the fundamentals of planning, design, organization, implementation, and management of a Web site. Students will be taught the basic concepts of Web page creation.  The Hypertext Markup Language (HTML), a markup language used to describe the content and format of documents on the Web will be taught. Cascading style sheets (CSS), a presentation markup language will be introduced. Appropriate Web authoring application software will be used for Web site management.

    Prerequisite: None.

    CSC 123 - Introduction to Scientific Programming

    3 sh

    This course is designed to help the student develop sound programming methodology using the modern programming languages prevalent in scientific communities as well as scientifically oriented specialized tools and libraries, and to gain an understanding of the key concepts in computer science and to develop skills that can be applied to programming in a scientific environment.  Topics include basic concepts of computer languages relating to data flow and execution flow - control constructs, functions, variables and data structures.  Additional topics will include applications to scientific problems and specialized extensions to programming languages via packages. Programming assignments will be designed so that each student will write code pertinent to her/his scientific specialty.

    Prerequisite: None.

    CSC 125 - Discrete Math for Computing I

    3 sh

    This course is designed to ensure that students reach the level of mathematical maturity necessary for the study of computer science and information technology. This course encompasses a study of predicate calculus, sets, functions, relations, counting techniques, discrete probability, and graph theory.

    Prerequisite: MAT 105 or higher.

    CSC 130 - Information Technology Fundamentals

    3 sh

    This course is an introduction to the basic concepts of Information Technology (IT). This course is required for IT majors and is intended to provide for most of these students the first introduction to IT as an academic discipline.  Topics include hardware and software basics, database concepts and queries, computer networks, systems design, the IT profession, and its responsibilities, and legal and ethical issues raised by IT.  

    Prerequisite:  None.

    CSC 135 - Computer Science I

    3 sh

    An introduction to computer components; algorithmic design and the constructs of structured programming; elementary data types and data operations; programming in a high-level language; one-and-two dimensional arrays; functions and top-down, modular, step-wise programming; computer solution of several numerical and non-numerical problems.

    Prerequisite: None.

    CSC 136 - Computer and Information Science II

    3 sh

    This course extends the topics developed in CSC 135. Also covered are concepts of data abstraction and encapsulation as part of the object-oriented paradigm, pointers, recursion, and beginning data structures such as stacks and queues.

    Prerequisite: CSC 135 or equivalent with a C or better.

  • 200 Level Computer Science Courses

    CSC 220 - Object-Oriented Multimedia Programming

    3 sh

    This course introduces students to object-oriented programming in the context of implementing multimedia systems. Object-oriented programming topics include classes, information hiding and encapsulation, delegation, several types of inheritance, mechanisms for code reuse, and design for flexible refactoring. Students will use object-oriented programming to manipulate graphical images, video streams, audio signals, physical devices containing electronic sensors and effectors, and a partial combination of these media. There will be solo and team programming projects.

    Prerequisite: CSC120, or CSC136 with a grade of C or better. 

    CSC 223 - Advanced Scientific Programming

    3 sh

    This course takes students deeper into the theory of scientific programming, building on a foundation of sound programming methodology and an understanding of the modern programming languages prevalent in scientific communities and of the specialized tools and libraries. A thorough grounding in computer science principles will enable the student to gain knowledge and skill to best leverage these tools for scientific study and research. Topics include basic concepts of problem analysis and program design both from a procedural and structural standpoint - algorithm development, algorithm analysis, data structures, data storage, data analysis, and data visualization. Additional topics will include applications to scientific problems.

    Prerequisites: (C or better in CSC123) or (C or better in CSC135).

    CSC 225 - Discrete Math for Computing II

    3 sh

    This course is the second in a two-course discrete mathematics sequence designed to ensure that computer science students reach the level of mathematical maturity necessary for the study of computer science. This course encompasses a study of methods of formal proof, induction, counting, graphs, recursion, algorithm specification, and algorithm analysis.

    Prerequisite: CSC 125 and CSC 135.

    CSC 235 - Computer Organization and Assembly Language

    3 sh

    This course is designed to provide an understanding of the organization and internal execution of a program by a modern digital computer.

    Prerequisites: CSC 136, CSC 125.

    CSC 237 - Data Structures

    3 sh

    This course is an examination of the basic data structures used to store and manipulate data in memory.  The use of classes to represent abstract data types is discussed.  Several data structures are implemented and used.  The course will involve the evaluation of the data structures and the algorithms associated with them.

    Prerequisites: CSC 136 with a C or better and CSC 125.

    CSC 240 - Fundamentals of Game Development

    3 sh

    This course explores key concepts in game development, which includes game development life cycle (GDLC), game dimensions, principles of gaming, teamwork, game culture and gaming tools. Particularly, story, storyboarding, data modeling and game engines will be explored in detail.

    Prerequisite: a grade of “C” or better in one of the following courses: CSC120 OR CSC123 OR CSC135.

    CSC 241 - Advanced Visual Basic Programming

    3 sh

    This course is a study of some of the advanced features of Visual Basic. This study would include window design, database access, and object-oriented features of the language.  Under window design, such topics as menus, list boxes, common dialog boxes, and multiple form interfaces will be studied. Under database access, such topics as creating/opening a database and reading/writing with a database will be studied. Object-oriented concepts such as classes and controls will be covered.

    Prerequisites: CSC 135 or CSC 112.

    CSC 242 - Web Programming

    3 sh

    This course is an introduction to the basic concepts of client/server scripting on the Web. Topics will include Web architecture, standards, and infrastructure, client/server architecture on the Web, markup languages and style sheets, client-side data validation and form processing, client-side cookie usage, server-side data processing, information storage, and backend databases, and issues involved with Web interface development.

    Prerequisite: C or better in CSC135 OR C or better in CSC120.

    CSC 243 - Java Programming

    3 sh

    This course introduces the student to event-driven, object-oriented programming using the Java programming language. The student is introduced to the design, creation, use, and communication that take place among objects. The student will learn how to develop and use graphical user interfaces to represent objects and their environments and handle exceptions when they occur.

    Prerequisites: C or better in CSC 136.

    CSC 252 - UNIX: Scripting and Administration

    3 sh

    This course deals with the study of the UNIX operating system, particularly, systems programming and administration. Under the former, such topics as UNIX commands, filters, shell scripts, system security, user accounts, system backup and rebooting, and associated utilities are studied. In addition, software procurement, and installation will be illustrated. Meaningful applications, which illustrate the topics, will be given.

    Prerequisite: CSC120 or CSC123 or CSC135.

    CSC 253 - Information Technology Systems

    3 sh

    Information Technology comprises the part of computing that provides solutions to problems using computer-based technologies. Representing the fundamental vehicle through which computing solutions are provided, the technologies that make up these solutions are continually evolving. The course introduces the student to information technology systems, specifically the basic concepts used to define, build, and maintain information technology systems. Students will be introduced to the major technologies that are used in information technology systems, how these technologies are assembled into operating system architecture, and the principles of systems and information management.

    Prerequisite: CSC 125 and CSC 136.

    CSC 273 - Systems Integration

    3 sh

    This course focuses on the integration of information systems in organizations, which is the process by which different computing systems and software applications are interconnected. It examines the strategies, methodologies, and implementation for combining interdependent systems, enabling two or more applications to interact and exchange data seamlessly. The course will explore various trends in system integration, including Enterprise Resource Planning (ERP) software, cloud computing, and mobile integration.

    Prerequisite: CSC237 or CSC253.

    CSC 280 - Cooperative Internship in Computer Science I

    6 sh

    Supervised industrial experience at the level of apprentice programmer or information technologist. Available only to CS Majors. Prerequisites: Completion of 12 CSC credits numbered 120 or higher and minimum 2.0 GPA (overall). All arrangements for a cooperative internship are to be made through the Computer Science and Information Technology Department, and approval by both advisor and department chairperson are necessary.
  • 300 Level Computer Science Courses

    CSC 310 - Programming Languages

    3 sh

    This course deals with the main constructs of contemporary programming languages and the tools necessary for the critical evaluation of existing and future programming languages. It provides an in-depth discussion of programming language structures, presents a formal method of describing syntax, and introduces approaches to lexical and syntactic analysis.

    Prerequisites: CSC 237 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in the CSC courses of 2.25.

    CSC 311 - Computer Networks

    3 sh

    Computer networks have become ubiquitous in our society. In-depth understanding of their workings is an important part of the foundation of knowledge not only for a computer science student who intends to incorporate networking in their scholastic or professional endeavors but for anyone working in the discipline, as networking concepts are applicable in many areas inside and outside the discipline. The students will learn the terminology and implementation of computer networks, and the physical components of networks, including cabling and devices, as well as how these components work. Several application-layer protocols will also be studied, including HTTP, E-mail, DNS and DHCP.

    Prerequisites: CSC 237 or CSC 253 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in the CSC courses of 2.25.

    CSC 320 - Game Development I

    3 sh

    This course introduces the student to the concepts, process, and algorithms of game design. Topics in this course include an introduction to the game design process, game design problems, game algorithms, algorithm implementation and application, data and data structures in game design, and artificial intelligence in game design. The student will create at least two original games using the techniques presented in the course.

    Perequisites: (CSC220 or CSC136 or CSC223 or CSC243) AND CSC240.

    CSC 325 - Introduction to Computer Science Theory

    3 sh

    This course covers computer science skills required to understand, model, and devise efficient solutions for problems. These skills include techniques for modeling problems, determining the inherent complexity of problems, devising appropriate solutions for problems, and analyzing the efficiency of problem solutions. Topics include automata theory, computability theory, computational complexity, and algorithm design strategies.

    Prerequisites: CSC 225 AND CSC 237 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in the CSC courses of 2.25.

    CSC 328 - Network Programming

    3 sh

    This course provides coverage of the basics of network programming methodology and implementation with the inclusion of relevant aspects of security. Topics that will be covered are network protocols and interprocess communication (IPC) facilities, including pipes and sockets. Applications using both UDP and TCP will be implemented and analyzed. Both the client and server sides of network applications will be designed and implemented. Application layer security requirements will also be discussed.

    Prerequisites: CSC237 or CSC253.

    CSC 330 - Introduction to Mobile Architecture and Systems

    3 sh

    This course introduces students to the concepts of technology mobility and the role that new and smaller computing devices play in new systems development. The student will be introduced to the field of mobile systems architecture and apply this knowledge to the creation of architectures using both mobile and traditional computing resources. Following this, the student will learn about development using today's popular mobile devices and develop their own architecture and system based on mobile devices.

    Prerequisites: CSC 237 or CSC 253, and CSC 243.

    CSC 341 - Introduction to Information Security

    3 sh

    This course is an introduction to the basic concepts of information security. Topics include security threats and attacks, viruses and other malicious programs, risk management, security protection, basic cryptography, and trusted information systems.

    Prerequisites: CSC 237 or CSC 253 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in CSC courses of 2.25 or above.

    CSC 342 - Web Technologies

    3 ch - 3 sh

    This course is an introduction to the basic concepts of technologies that are used on the Web.  Topics include Web basics, standards, and infrastructure, client/server architecture on the Web, page presentation using markup languages and style sheets, the Document Object Model (DOM), client-side programming and server-side programming, Web data representation, and Web services.

    Prerequisites: C or better in CSC242 and Junior Standing.

    CSC 343 - Operating Systems

    3 sh

    This course is an introduction to the basic software components of an operating system.  Topics include process management, storage management, processor management, auxiliary storage management, evaluation of an operating system's performance, networks, operating system security, case studies of particular operating systems.

    Prerequisites: CSC 237 or CSC253 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in the CSC courses of 2.25.

    CSC 351 - Digital Forensics for Computer Scientists

    3 sh

    Digital Forensics entails the collection, organization, explanation, and presentation of evidence assembled in the course of investigations initiated by legal and law enforcement personnel to substantiate or refute legal proceedings of a criminal or non-criminal nature. Because computer scientists play a key role in defining and using technologies for digital forensics, their involvement in such activities is extremely critical. The purpose of this course is to engage the student in digital forensics activities from three viewpoints. The first viewpoint involves looking at digital forensics from the standpoint of the activities and issues faced by the digital forensics expert. The second viewpoint is to consider the nature of the contributions that computer scientists can make to the field of digital forensics through the creation and advancement of algorithms to aid in forensics analytical tasks. Finally, the third viewpoint will be to examine digital forensics from the viewpoint of the legal personnel involved and to consider their requirements for evidence and explanation.

    Prerequisite: CSC 341 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in the CSC courses of 2.25.

    CSC 354 - Software Engineering I

    3 sh

    This is the first course in a two-semester capstone sequence. This course introduces the fundamental principles of software engineering. Coverage will include the System Development Lifecycle (SDLC) methodologies, capturing requirements, design modeling, project management, risk management, and quality assurance.  Students will learn techniques for requirements elicitation, prioritization, validation, and specification. They will be introduced to various design models that are used to capture requirements.

    Prerequisite: Completion of 24 CSC credits, numbered 125 or higher AND a GPA of 2.25 in the CSC courses.

    CSC 355 - Software Engineering II

    3 sh

    This is the second course in a two-semester capstone sequence. This course presents the advanced principles of software engineering. Coverage will include the professional responsibilities of the software engineer, implementation, testing, configuration management, and project management.  Students will be introduced to different development and testing approaches.

    Prerequisite: Completion of CSC354 with a grade of C or better AND a GPA of 2.25 in the CSC courses.

    CSC 356 - Introduction to Database Management Systems

    3 sh

    Database technology is fundamental to all information technology. Seldom is there a system that has been developed today without having some kind of database component. This course provides the students with a fundamental understanding of database concepts, how to create, modify, and access databases, the different types of databases, and an introduction to advanced database topics.

    Prerequisite: CSC 253 or CSC 237 AND completion of 18 hours of CSC courses numbered 125 or higher AND a GPA in the CSC courses of at least 2.25.

    CSC 361 - Finite Automata & Formal Languages

    3 sh

    Introduction to a series of models for computation and their relationship to formal languages that are useful in the definition of programming languages along with a look at the theoretical limits of computers. Topics include finite and pushdown automata, Turing machines, grammars, and decidability.

    Prerequisites: CSC310 AND completion of 18 credits of CSC courses numbered 125 or higher AND a GPA in the CSC courses of 2.25.

    CSC 363 - Interdisciplinary Software Rapid Prototyping

    3 sh

    This course combines students from computer science and information technology programs with students taking a course offered by another academic department into interdisciplinary teams that solve a problem or create a prototype product within the domain of that application discipline or disciplines. Student teams analyze problems or opportunities in the disciplinary application domain. They use rapid prototyping techniques that combine off-the-shelf software and custom software to create a prototype software system, and they present or exhibit this system to an audience interested in the domain.

    Prerequisites: Completion of 24 CSC credits, numbered 125 or higher AND a GPA in the CSC courses of 2.25 in the CSC courses.

    CSC 372 - Independent Study and/or Projects in Computer Science

    3 sh

    This course involves individual independent study in some area of computer science under the direction of a CS group staff member.  This study can be made in any of the areas of analog and hybrid computers, artificial intelligence, automate theory, business information systems, computer-aided design, computer-assisted instructions, computer graphics, computer mechanisms and devices, computer systems, computer telecommunication, computer typesetting, information retrieval, linguistic processing, mechanical languages, numerical analysis, programming theory, or switching systems and logical design, and others. A student may register for this course more than once up to a maximum of six hours of credit.

    Prerequisites: Consent of the student's advisor, instructor, and department chairperson.

    CSC 380 - Cooperative Internship In Computer Science II

    3 - 6 sh

    This second internship consists of 6-12 weeks of full-time employment that provides students with supervised industrial experience in computer science. The internship is supervised by a member of the Computer Science Department. This internship is available only to Computer Science majors and is taken on a pass/fail basis.

    Prerequisites: CSC 280 and approval by the department chair is required.

    CSC 385 - Computer Science Seminar

    3 sh

    A study of topics in computer science designed to integrate and apply the concepts and the knowledge acquired throughout the student's academic career; and intense experience in applying both knowledge and concepts to a major programming project.

    Prerequisites: Completion of 36 CSC credits, numbered 125 or higher and a GPA of 2.25 in the CSC courses.

    CSC 398 - See Honors Supplementary Research

    1 - 3 sh

  • 400 Level Courses in Computer Science

    CSC 402 - Advanced Data Structures 

    3 sh

    This course is the second course in data structures.  It is designed to present the computer science student with depth of knowledge in the area of data structures.  The course is a study in advanced topics of data structures focusing on their structure, efficiency and application.  Data structures introduced or expanded include graphs, sets and trees.

    Prerequisite: CSC 237.

    CSC 411 - Advanced Networking

    3 sh

    This course deals with the theory, implementation, and administration of networks. It is also concerned with the various layers of the Internet architecture stack, with a concentration on layers 3 and 4. The primary protocols for these layers, Transmission Control Protocol (TCP) and Internet Protocol (IP), will be studied in detail. Network addressing and related protocols will also be covered.

    Prerequisites: CSC 311 or unconditional admission to the Graduate program.

    CSC 415 - Design and Analysis of Algorithms I

    3 sh

    This course examines the algorithm design and analysis techniques. Contents include analysis of algorithm efficiency, recursion, divide and conquer, decrease and conquer  (incremental approach), transform and conquer, dynamic programming, greedy algorithm, and basic search and sorting.

    Prerequisites: CSC 126 and CSC 237 or unconditional admission to the Graduate Program in CSC or permission of instructor.

    CSC 421 - Web-Based Software Design & Development

    3 sh

    This course introduces the students to web-based software design. Using object-oriented techniques, the students will learn how to develop mainly on the client side of event-based web applications. Projects will build rudimentary knowledge of event-based design and then expand upon those foundations to create web-based software and to add multimedia enhancements, including audio, video, and animation. The completion of projects using these features is an integral part of the course.

    Prerequisites: (CSC 237 or CSC 253) and CSC243.

    CSC 423 - Game Development II

    3 sh

    This course is a continuation of the subject matter of CSC 320, Games Development I. In CSC 320, the basics of game development are covered, from concept to storyboard to low-tech prototype and finally to implementation using a game engine. In this course, students will continue the study of game engines and look closely at some of the more advanced features. Animation techniques, 3D modeling, rigging, gravity, and artificial intelligence will be examined. The student will implement at least two original games using these aspects of game development.

    Prerequisite: CSC320 or acceptance into a computer science graduate program (CS/SD, CS/IT, PSM).

    CSC 425 - Principles of Compiler Design I

    3 sh

    Content of this course includes multi-phase, translation, lexical analysis, parsing, LL, LR, and LALR parser constructors, error recovery, symbol table organization, static semantic analysis, and the interpretation of formal semantics.

    Prerequisites: CSC 310(Procedure Oriented Programming Languages) or permission of the instructor.

    CSC 441 - Advanced Information Security

    3 sh

    This course is an in-depth study of information security. Topics include security threats and attacks, encryption algorithms, cryptosystems, attacks on cryptosystems, firewalls, VPNs, IDPSs, and network security.  The concepts of the above will be explored and discussed.

    Prerequisite: CSC341 or unconditional acceptance into the graduate program.

    CSC 445 - Introduction to Intelligent Robotics

    3 sh

    This course deals with the theory and implementation of intelligent robotics and autonomous agents. The history, fundamental principles, elements, and algorithms of intelligent robots, both in simulation and in the real world, will be examined. Fundamental issues and debates regarding design and implementation and their roots in knowledge representation and theoretical computer science will be investigated. Using the knowledge gained, students will implement actual designs.

    Prerequisite: CSC 237 or CSC 253 or permission of instructor.

    CSC 447 - Artificial Intelligence I

    3 sh

    An overview of artificial intelligence is presented, including its history, concepts, techniques and ethical implications. An artificial intelligence programming language (e.g., LISP, Prolog) will be introduced.

    Prerequisites: CSC 237 or CSC 253 or permission of instructor.

    CSC 456 - Database Management Systems I

    3 sh

    Database systems are an integral component of almost every information technology system. This course introduces essential database concepts, data models, database design principles, data normalization, and query languages primarily from a relational database point of view. Various real-world problems of moderate to high complexity are discussed to design and implement database applications.

    Prerequisites: CSC 356 or unconditional acceptance in graduate program or instructor's permission.

    CSC 458 - Data Mining and Predictive Analytics I

    3 sh

    Many academic and commercial endeavors apply the techniques of data mining and predictive analytics to their data sets. Students taking this course will learn methods and software tools for locating and obtaining data of interest, for preparing data for semi-automated analysis, for interacting with software tools in analyzing data for patterns, for visualizing structural and dynamic patterns in data, and for designing systems that respond to patterns in data. Data cleaning and formatting require some programming in a modern scripting language. Other course activities include learning to use off-the-shelf software tools to accomplish the tasks of data analysis. 

    Prerequisites:  At least sixty university credits completed and (a grade of “C” or better in CSC223) and (a grade of “C” or better in one of the following courses: MAT140 or MAT150, or MAT 301 or POL/PSY/SOC200 or SOC201 or BUS120); or unconditional acceptance into a graduate program in CSC. 

    CSC 459 - Introduction to Big Data

    3 sh

    This course explores key data management and analysis techniques, which deal with massive datasets to enable real-time decision-making in distributed environments, business intelligence in the Web, and scientific discovery on a large scale. In particular, map-reduce parallel computing paradigms and associated technologies, such as distributed file systems, NoSQL databases, and basic machine learning methods, will be explored.

    Prerequisites: At least sixty university credits completed and (a grade of “C” or better in CSC223) and (a grade of “C” or better in one of the following courses: MAT140 or MAT150, or MAT 301 or POL/PSY/SOC200 or SOC201 or BUS120); or unconditional acceptance into a graduate program in CSC.

    CSC 464 - Human Computer Interaction

    3 sh

    This course is designed to provide an understanding of the principles of user interface design for software, and also to gain practical experience designing interfaces for existing software applications.

    Prerequisites: CSC 237or CSC 253, and some experience implementing graphical user interfaces, or permission of instructor.

    CSC 472 - Independent Study and/or Projects in Computer Science

    1 - 6 sh

    This course involves individual independent study in some area of computer science under the direction of a CS group staff member. This study can be made in any of the areas of analog and hybrid computers, artificial intelligence, automate theory, business information systems, computer-aided design, computer-assisted instructions, computer graphics, computer mechanisms and devices, computer systems, computer telecommunication, computer typesetting, information retrieval, linguistic processing, mechanical languages, numerical analysis, programming theory, or switching systems and logical design, and others. A student may register for this course more than once up to a maximum of six hours of credit.

    Prerequisites: Consent of the student's advisor, instructor, and department chairperson.

    CSC 480 - Selected Topics in Computer Science

    3 sh

    An in-depth study of a specialized area of computer science.  Content will vary from semester to semester.  May be repeated with a different topic.

    Prerequisites: Permission of instructor, advisor, and department chairperson.

  • 500 Level Courses in Computer Science

    CSC 505 - Fundamentals of Computer Systems

    3 sh

    This course discusses the design and organization of modern computer systems, including fundamental hardware and software building blocks. The course provides a comprehensive introduction to computer organization and computer communications. Topics related to computer organization include Boolean logic, number systems, data representation and formats, hardware building blocks, processor architectures, memory and storage subsystems, input/output systems, and operating system functions. Topics related to computer communications including synchronous and asynchronous data communication, and local and wide area networks will be studied.

    Prerequisites: Unconditional acceptance into the graduate program.

    Note: A student in the combined MS/BS program cannot receive credit for this course if they passed CSC235.

    CSC 510 - Advanced Operating Systems

    3 sh

    This course reviews the basic software components of an operating system and includes advanced topics, including distributed processing and distributed process management, evaluation of an operating system's performance, networks, operating system security, case studies of particular operating systems.

    Prerequisites: CSC 505, or unconditional acceptance into the graduate program or permission of instructor.

    CSC 512 - Network Architecture and Protocols

    3 sh

    This course deals with the implementation of all TCP/IP details.  Algorithms at all layers of the TCP/IP architecture will be examined.  Network, hardware, and management will be explored in detail.

    Prerequisites: CSC 411 or unconditional acceptance to the graduate program.

    CSC 516 - Design and Analysis of Algorithms II

    3 sh

    More advanced topics in the design and analysis of algorithms will be covered.  Included will be branch and bound technique, NP-Hard and NP-Complete problems, approximation algorithms and some well-known case studies.

    Prerequisites: CSC 415 or its equivalent.

    CSC 520 - Advanced Object-Oriented Programming

    3 sh

    This course introduces the concepts of object-oriented programming languages, object-oriented analysis and design, and design patterns, and demonstrates their use in the development of an object-oriented implementation of a major project. The Unified Modeling Language (UML) is used to develop the project's design and implementation. A current programming language is used throughout the course to illustrate major concepts and implement the project.

    Prerequisites: Unconditional acceptance into the graduate program or permission of the instructor.

    CSC 521 - Advanced Web-Based Software Development

    3 sh

    This course introduces the students to web-based software development. Using several techniques, and languages such as java and scripting languages. the students will learn how to develop both server and client-side applications that employ current technology. The student will design and implement a substantial piece of web-based software.

    Prerequisites: CSC421 or unconditional acceptance into the graduate program.

    CSC 523: Advanced Scripting for Data Manipulation, Analysis, and Machine Learning

    3 sh

    This course covers advanced study and practice in using a modern scripting language to integrate off-the-shelf code libraries for the retrieval of unstructured and partially structured data, and for the cleaning, integration, formatting, storage, analysis, and visualization of large data sets. Modern scripting languages include powerful built-in features for storing, retrieving, mapping, and integrating data; code libraries extend such features greatly. Libraries include those for regular-expression based extraction of textual data, data integration, statistical analysis and correlation, machine learning, natural language processing, machine vision and listening visualization, and storage in files and database systems. Emphasis is on using a scripting language to glue together off-the-shelf library modules without writing the complex, underlying library code.

    Prerequisites: unconditional acceptance into a graduate program in CSC.

    CSC 526 - Principles of Compiler Design II

    3 sh

    This is a project-oriented course in the implementation of a compiler of a simple programming language.  Topics studied will include intermediate program representations, code generation and address assignment, register allocation and assignment on general-register machines, run-time storage administration, data-flow analysis, and code improvement.

    Prerequisites: CSC 425 or permission of the instructor.

    CSC 540 - Engineering Enterprise Object-Oriented Systems

    3 sh

    This course explores the life cycle of enterprise object-oriented frameworks, including incremental analysis, architecture, design, implementation, documentation, and support. The keystone to the course is the maintenance and extension of a framework-based software component system, using current industrial framework technology, that performs useful work for customers and that persists across semesters. Topics include communication with customers and support personnel, requirements collection and analysis, build versus buy decisions for software components, specification-based application generation, rapid prototyping, categories of testing, and software tools for automation of these activities.

    Prerequisites: CSC 421 or CSC 520 or CSC 521 or permission of the instructor.

    CSC 543 - Multiprocessing and Concurrent Programming

    3 sh

    This course explores the concepts and practices of creating software that makes effective use of modern multiple-processor computers. Emphasis is on partitioning program code and data for safe and efficient execution on multiple processors that share machine resources such as memory. Lab exercises include construction, execution and benchmarking of multithreaded programs on several multicores, multithreaded computers. Prerequisites: Unconditional acceptance into the graduate program.

    CSC 548 - Artificial Intelligence II

    3 sh

    A study of advanced topics in artificial intelligence (AI) focusing on those aspects of AI which are most relevant to the design and construction of intelligent agents: control, knowledge acquisition and representation, reasoning with knowledge, planning and carrying out actions.

    Prerequisites: CSC 447  or permission of instructor.

    CSC 552 - Advanced UNIX Programming

    3 sh

    This course studies the concepts of dealing with UNIX system programming.  A lot of emphases will be placed on working with processes and interprocess communication (IPC).  Details of various aspects of IPC will be explored and implemented, including pipes, semaphores, sockets, message queues, and shared memory.

    Prerequisites: Unconditional acceptance to the graduate program or permission of the instructor.

    CSC 554 - Project Management

    3 sh

    This course discusses the principles of project management which are considered mandatory for the success of business projects. The focus of discussion is project management in general and information systems project management in particular. Though behavioral and organizational aspects of project management are discussed, the emphasis is more on learning tools and techniques which provide quantitative insight during the project management life cycle. These tools and techniques are required to effectively plan, monitor and control the projects. In this course, students also get the opportunity to work on projects simulating real-world situations to practice concepts and techniques learned in this course.

    Prerequisites: CSC354 or unconditional acceptance to the graduate program.

    CSC 555 - Applied Cryptography

    3 sh

    An introduction to the computer-based cryptographic systems, focusing on the underlying theory and on the design and application of such systems.  Topics include classical cryptosystems, cryptographic protocols, cryptographic techniques, cryptographic algorithms, cryptanalysis, and real-world applications of cryptosystems.

    Prerequisites: Unconditional acceptance into the graduate program or permission of instructor.

    CSC 556 - Database Management Systems II

    3 sh

    This course introduces the design issues involved in the development of a database management system itself. It discusses physical database design, file structures and access methods, query optimization, transaction processing, concurrency control, database recovery, database security, and database administration. It also discusses advanced topics typically distributed databases, data warehousing, and data mining.

    Prerequisites: CSC 456.

    CSC 558 - Data Mining and Predictive Analytics II

    3 sh

    This course covers advanced study and practice in data mining and predictive analytics. Topics include understanding, configuring, and applying advanced variants of data association, classification, clustering, and statistical analysis engines analyzing and applying underlying machine learning algorithms, exploring instance-based, support vector, time-series, ensemble, graphical, and lazy learning algorithms, meta-learning, neural nets, genetic algorithms, and validating results. The course examines topics specific to very large data sets. Data cleaning and formatting require some programming in a modern scripting language. Other course activities include using, extending, and customizing off-the-shelf machine learning software systems to accomplish the tasks of data analysis.

    Prerequisites:  CSC 458. 

    CSC 570 - Independent Study and/or Projects in Computer Science

    3 sh

    This course involves individual independent study in some area of computer science under the direction of a CS group staff member. This study can be made in any of the areas of analog and hybrid computers, artificial intelligence, automate theory, business information systems, computer-aided design, computer-assisted instructions, computer graphics, computer mechanisms and devices, computer systems, computer telecommunication, computer typesetting, information retrieval, linguistic processing, mechanical languages, numerical analysis, programming theory, or switching systems and logical design, and others. A student may register for this course more than once up to a maximum of six hours of credit.

    Prerequisites: Consent of the student's advisor, instructor, and department chairperson.

    CSC 580 - Special Topics in Computer Science

    3 sh

    An in-depth study of a specialized area of computer science.  Content will vary from semester to semester.  May be repeated.

    Prerequisites: Consent of the instructor, advisor and department chairperson.

    CSC 590 - CS Cooperative Internship

    3 sh

    The internship is designed to give students industrial, supervised practical experience in a Computer Science-related position.  The internship can be done at any company associated with the Computer Science department or one of the intern's choosing.   All arrangements for a cooperative internship are to be made through the Computer Science Department, and approval by both advisor and department chairperson are necessary. Once completed, the employer is required to submit an evaluation of the student. 150 work hours.

    CSC 599 - Thesis

    3-6 sh

    This course is for those MS candidates completing a thesis. Its content is computer science and/or information technology research under the direction of a thesis advisor who is a member of the graduate faculty. A student will ordinarily register for 6 hours of credit to be taken over a period of two semesters; however, other configurations are possible, including one hour for a thesis that is incomplete after six hours with some substantial work remaining. The course is repeatable up to a maximum of 12 total credits for the course. 
    Departmental guidelines require the student to have successfully completed at least 6 semester hours of courses in the computer science and information technology MS program.

    Prerequisites: Acceptance in the graduate program and consent of the student's advisor and the department chairperson.