Undergraduate Courses
CSC 120 Introduction to Computing (A)
Prerequisites: MTH 111 or higher.Covers the fundamental of computer problem solving and programming. Includes these topics: program development process, programming methodologies, language translation phases, Java programming (data types, variables, expressions, assignment, selection, iteration, methods, parameter passing and I/O), secure coding techniques and ethical, legal and social issues of computing. 4 Cr. Every Semester.
CSC 203 Problem Solving with Objects (A)
Prerequisites: CSC 120 and MTH 122 or higher.Covers fundamentals of algorithms and object-oriented software development. Includes these topics: primitive and reference data types, classes, methods, selection, iteration, parameters, recursion, exception handling, arrays, file I/O, inheritance, polymorphism, program testing and documentation, introduction to GUIs and introduction to sorting and searching techniques and other basic algorithms. Requires extensive programming and supervised laboratory sessions. 4 Cr. Every Semester.
CSC 205 Fundamentals of Data Structures (A)
Prerequisites: CSC 203 and MTH 281.Covers the fundamentals of abstract data structures and their implementation. Includes these topics: software modeling, program development, testing; implementation and use of stacks, queues, linked lists, binary tress, recursion, searching and sorting algorithms, introduction to analysis of algorithms and program verification, even-driven programming with graphical user interfaces. Requires extensive programming and supervised laboratory sessions. 4 Cr. Every Semester.
CSC 209 UNIX Tools (A)
Prerequisite: CSC 203 or CYB 203.Provides a comprehensive introduction to the UNIX operating system from the programmer's point of view. Includes these topics: basic commands, file system structure, concept of shells, shell features (pipes, redirection, etc.), access control, process control, scripting, UNIX tools (sed, grep, make, etc.). Requires extensive hands-on laboratory exercises and shell-script programming. 1 Cr. Every Semester.
CSC 219 Programming in C (A)
Prerequisites: must take CSC 209 and CSC 203 or CYB 203.Provides an advanced coverage of the C language. Includes these topics: syntax, semantics, control structures; arrays, pointers and pointer arithmetic; string manipulation; structs and unions; functions and parameter passing, command line arguments; bit level operations. Requires extensive programming. 1 Cr.
CSC 295 Topics in Computer Science (A)
Prerequisite: Published prior to registration each semester.Addresses current topics in the field at an introductory level. Each offering of the course is motivated by the expertise of the instructor and by students' interests. Descriptions and prerequisites are published prior to the registration period for the course. Example topic: Problem Solving Seminar. 1-3 Cr.
CSC 311 Computer Organization and Architecture (A)
Prerequisites: CSC 203 and MTH 281.Covers fundamentals of computer architecture and organization. Includes the following topics: digital logic and circuit design, data representation, CPU and ALU architectures, instruction set encoding, fetch-decode-execute cycle, addressing modes, memory management, handling of subprograms and assembly language programming. Requires extensive programming and supervised laboratory sessions. 4 Cr. Every Semester.
CSC 312 Cybersecurity (A)
Prerequisites: CSC 209 & CSC 311 or CIS 303.Covers fundamental issues and tools relating to insuring that computer systems are secure and reliable. Includes these topics: recognizing attackers, maintaining confidentiality, integrity and availability of computing systems, account control and access rights management, software vulnerability analysis, defense, exploitation, reverse engineering, operating system security and malware, applied cryptography, and legal and ethical issue of security. 3 Cr. Every Semester.
CSC 356 Life in the Digital Age (A,I,W)
Studies the impact of new technologies on a global society. Includes the changing nature of privacy and growing use of government surveillance, ie. national ID cards and RFID tracking. Also considers the Internet's effect on societal communication and differences in gender communication patterns, issues of freedom of expression and censorship, the influence of technology in the workplace and at home, and other relevent topics. 3 Cr.
CSC 401 Programming Languages (A)
Prerequisites: CSC 205 and 219 and 311.Studies the concepts of various programming languages. Includes these topics: history of languages, design principles, formal syntax and semantics, implementation: compilation and interpretation, comparative study of features in various languages considering criteria such as binding, scope, type conversion, data abstraction, parameter passing techniques, exceptions and I/O. Covers various programming paradigms such as procedural, object-oriented, functional, logic and scripting. Requires extensive programmming. 3 Cr. Fall.
CSC 406 Algorithms and Data Structures (A)
Prerequisites: CSC 205 and MTH 481.Covers design and analysis of data structures and associated algorithms using object-oriented methods. Includes these topics: complexity measures, pre-and post-conditions, programming to interfaces, union-find sets, hashing, trees (AVL, splay, B-Trees), graphs, recursion, algorithm design strategies and NP-completeness. Requires extensive programming. 3 Cr. Spring.
CSC 414 Operating Systems and Parallel Computing (A)
Prerequisites: CSC 209 & 219 & 311.Covers basic principles of operating systems and parallel and distributed computing. Includes these topics: OS role, components and structure, process concepts, threads, CPU scheduling, memory management, concurrent processes, interprocess coordination and communication, parallelism versus concurrency, parallel architecture, algorithms, and decomposition. Requires extensive programming. 3 Cr. Spring.
CSC 423 Web Application Development (A)
Prerequisites: CSC 209 and CSC 422 or CIS 422.Covers the basic principles involved in developing Web-based applications that operate with a back-end relational database. Includes these topics: basics of HTTP-based client-server systems, web page creation with XHTML/CSS, client-side scripting, server-side software development, interfacing to relational databases, model-view separation, and database serialization/viewing using XML/XSLT. Requires team project involving design/setup of database server and development of application interfacing to database. 3 Cr.
CSC 427 Software Systems Engineering (A)
Prerequisite: CSC 205.Provides an introduction to software engineering methodologies and programming-in-the-large. Includes these topics: life-cycle models, development standards, project organization, estimation techniques, requirements modeling, specification techniques, object-oriented and structured approaches to software design, implementation issues, testing, verification and validation, maintenance and documentation. Requires students to work in teams developing a large-scale software product. Develops technical communication and writing skills. Requires extensive programming. 3 Cr. Fall.
CSC 429 Object-Oriented Software Development (A)
Prerequisite: CSC 427.Provides an introduction to OOP concepts and their applications using Java. Includes these topics: review of OOP fundamentals, UML modeling; advanced Java features: interfaces, abstract classes, GUI programming, layout managers, event and exception handlers, etc.; software design principles, cohesion and coupling; detailed coverage of design patterns: model-view-controller, observer, adapter, factory, strategy, singleton, etc.; software quality assurance: testing strategies. Requires extensive programming. 3 Cr.
CSC 434 Artificial Intelligence and Machine Learning (A)
Prerequisite: CSC 205.Provides an introduction to artificial intelligence and machine learning, and their applications. Includes these topics: intelligent agents, problem solving using state space search, A* algorithm, heuristics, genetic algorithm, adversarial game, knowledge-based agent, machine learning basics, probabilistic reasoning, decision making, ensemble learning, support vector machine, feedforward neural networks, convolutional neural network; Al programming using Python. Project-based course. requires extensive programming. 3 Cr. Fall.
CSC 435 Data Analytics and Predictive Modeling (A)
Prerequisite: CSC 205.Teaches students how to be a data analyst. Learn how students can clean, manipulate, analyze and visualize databases to draw useful results and outcomes that help others to make decisions. Consists of two main parts. The first part covers data analytics using R language extensively. The second part covers several topics related to data science and analysis such as, machine learning and modeling, web scraping, natural language processing and clustering. 3 Cr. Spring.
CSC 442 Electronic Commerce Technology (A)
- 3 Cr.
CSC 444 Introduction to Parallel Computing (A)
Prerequisites: CSC 406 and MTH 481.Deals with design and analysis of parallel algorithms. Includes these topics: parallel models of computation, measures of complexity, parallel algorithms for selection, searching, sorting, merging, matrix algorithms, transitive closure, connected components, shortest path, minimum spanning tree and routing algorithms. Provides hands-on experience in a parallel programming environment. 3 Cr.
CSC 446 Principles of Cloud Computing (A)
Prerequisites: CSC 205, 209, and CIS 419.Covers basic concepts, models, technologies, applications, and programming tools in cloud computing. Includes these topics: concepts of cloud, scalability, cloud models, broadband networks and Internet architecture, virtualization technology, computing and storage hardware, cloud security mechanism, cloud infrastructure, cloud platforms, metrics of SLA and QoS, load balancing and scheduling algorithms, resilient distributed datasets, programming patterns and tools for cloud computing, big data access, and big data processing via Spark APIs. Requires extensive programming. 3 Cr. Spring.
CSC 483 Theory of Computation (A)
Prerequisites: CSC 203 and MTH 481.Provides a study of formal languages and theory of automata with an emphasis on Church's thesis and the "algorithm = machine" point of view. Includes these topics: regular expressions and context-free languages, finite and pushdown automata, Turing machines, computability, undecidability, and complexity of problems. 3 Cr. Spring.
CSC 486 Junior/Senior Seminar (A,Y)
Prerequisite: CSC 205 - Junior OR senior status AND Computer Science AND/OR Computer Information Systems AND/OR Cybersecurity majors only.Provides an overall view of the professional field of computing, emphasizing development of communication skills for the profession. Includes these topics: ethics in the field, history of computing technology, professional literature, organizations and related activities, finding and preparing for jobs and interviews, contemporary workplace issues, and career paths and opportunities. Requires extensive reading and writing, both technical and non-technical, as well as library research, and prepared group discussions and oral presentations. 3 Cr. Every Semester.
CSC 492 Computer Science Internship (A)
Prerequisites: Junior status, 3.0 or better average in computer science courses, appropriate course work, at least 18 credits towards the major completed prior to starting the internship, and instructor's permission.Provides an opportunity to apply knowledge from the classroom by working in a professional setting. Also provides a valuable and challenging experience for students who have never worked in such a situation, as well as for professionals furthering their education. Teaches the successful intern how effective professional performance requires integrating substantive knowledge with behavioral skills and proficiency in oral and written communication. Each student is supervised on campus by a computer science faculty member, and at the work site by qualified management personnel. Past projects have involved software engineering, graphics, database design, data communications, and process control. 1-3 Cr. By Arrangement.
CSC 493 Senior Thesis (A)
Prerequisites: Junior status, 3.0 or better average in computer science courses, appropriate course work, at least 18 credits towards the major completed prior to starting the thesis, and instructor's permission.Provides students with an opportunity to apply knowledge from the classroom by working in an independent research or development project in an academic setting, which is a valuable and challenging experience for students who are contemplating graduate studies in computer science, to test out their potential for independent study and advanced research. May involve substantial software or hardware development, structuring available commercial software/hardware for specific applications, or theoretical analysis of computational schemes. By developing a successful thesis, permits students to enrich their knowledge of computer applications, theory, hardware or software, to develop skills in analyzing problems involving current computing technologies, and to make effective oral aand written presentations of their accomplishments. Each student is supervised by a Department of Computer Science faculty member. 3 Cr. By Arrangement.
CSC 495 Topics in Computer Science (A)
Prerequisite: Published prior to registration each semester.As an advanced course, addresses current topics in the field. Each offering is motivated by the expertise of the instructor and students' interests. Requires students to complete a major research, design, or development project. Descriptions and prerequisites are published prior to the registration period for the course. Past topics include: networking, human factors, computational linguistics, advanced architecture, software engineering, logic programming, and program validation, object-oriented programming and parallel algorithms. 1-3 Cr.
CSC 499 Independent Study in Computer Science (A)
Prerequisite: Instructor's permission.Arranged in consultation with the instructor-sponsor and in accordance with the procedures of the Office of Academic Advisement prior to registration. 1-3 Cr. By Arrangement.
Graduate Courses
CSC 501 Programming Languages (A)
Prerequisite: CSC 311.Studies the concepts of various programming languages. Includes these topics: history of languages, design principles, formal syntax and semantics, implementation: compilation and interpretation, comparative study of features in various languages considering criteria such as binding, scope, type conversion, data abstraction, parameter passing techniques, exceptions and I/O. Covers various programming paradigms such as procedural, object-oriented, functional, logic and scripting. Requires extensive programmming. 3 Cr. Fall.
CSC 506 Algorithms and Data Structures (A)
Prerequisites: CSC 205 and MTH 481.Covers design and analysis of data structures and associated algorithms using object-oriented methods. Includes these topics: complexity measures, pre-and post-conditions, programming to interfaces, union-find sets, hashing, trees (AVL, splay, B-Trees), graphs, recursion, algorithm design strategies and NP-completeness. Requires extensive programming. 3 Cr. Spring.
CSC 511 Computer Architecture (A)
Prerequisites: CSC 303 and CSC 311.Covers design and organization of digital computers. Includes these topics: digital logic and circuit design, data representation, computer history, performance evaluation, CISC/RISC architectures, registers, memories and memory management, CPU and ALU architectures, instruction sets, busses and I/O systems, interrupt structure, microprogramming and control unit design. Covers additional topics such as virtual machines, parallelism and pipelining. 3 Cr. Fall.
CSC 512 Operating Systems (A)
Prerequisite: CSC 411.Covers basic principles of operating systems. Includes these topics: OS structures and design principles, concurrent processes and programming, threads, CPU scheduling, memory management and virtual memory, process synchronization and deadlock, file systems, mass-storage structure, I/O systems, and case study of UNIX/LINUX operating system. Requires extensive programming. 3 Cr. Spring.
CSC 519 Computer Networks (A)
Prerequisites: CSC 303 and CSC 311.Provides a comprehensive study of the field of computer communications, local area networks, and internetworking. Includes these topics: the OSI and TCP/IP models, protocols, topologies, data communication issues, error detection and correction, local area networks, network hardware, Ethernet and wireless technologies, WAN, packet-switching, routing, datagrams, Internet addressing, home networking and security. Includes hands-on experience with network hardware and software. 3 Cr.
CSC 521 Computer and Network Security (A)
(Prerequisite CSC 419 or CIS 419).Studies concepts, techniques and tools in computer and network security. Includes these topics: security, privacy, information assurance, threats, user authentication and access control; Unix and Windows examples; logs and intrusion detection; cryptography, public-key and private-key systems; Kerberos, IP security, firewalls, Web and database access control and security issues; ethical issues. Includes hands-on experience with security hardware and software. 3 Cr.
CSC 522 Relational Database Design (A)
Prerequisite: CSC 205.Provides a study of the theory and practice of the relational approach to database design. Includes these topics: DBMS vs. a traditional file processing, relational algebra, normalization, lossless and/or dependency preserving decomposition, query languages such as SQL and a language that is available on the system, query optimization, integrity and security, and database project design. Requires extensive programming. 3 Cr.
CSC 523 Web Application Development (A)
Prerequisites CSC 209 and CSC 422 or CIS 422.Covers the basic principles involved in developing Web-based applications that operate with a back-end relational database. Includes these topics: basics of HTTP-based client-server systems, web page creation with XHTML/CSS, client-side scripting, server-side software development, interfacing to relational databases, model-view separation, and database serialization/viewing using XML/XSLT. Requires team project involving design/setup of database server and development of application interfacing to database. 3 Cr.
CSC 527 Software Systems Engineering (A)
Prerequisite: CSC 205.Provides an introduction to software engineering methodologies and programming-in-the-large. Includes these topics: life-cycle models, development standards, project organization, estimation techniques, requirements modeling, specification techniques, object-oriented and structured approaches to software design, implementation issues, testing, verification and validation, maintenance and documentation. Requires students to work in teams developing a large-scale software product. Develops technical communication and writing skills. Requires extensive programming. 3 Cr. Fall.
CSC 529 Object-Oriented Software Development (A)
Prerequisite: CSC 427.Provides an introduction to OOP concepts and their applications using Java. Includes these topics: review of OOP fundamentals, UML modeling; advanced Java features: interfaces, abstract classes, GUI programming, layout managers, event and exception handlers, etc.; software design principles, cohesion and coupling; detailed coverage of design patterns: model-view-controller, observer, adapter, factory, strategy, singleton, etc.; software quality assurance: testing strategies. Requires extensive programming. 3 Cr.
CSC 534 Artificial Intelligence (A)
Prerequisite: CSC 401.Provides an introduction to artificial intelligence, its applications, and languages. Includes these topics: problem solving using state space search, heuristics, A* algorithm, game playing, mini-max, alpha-beta, knowledge-based expert systems, forward and backward chaining, natural language understanding, evolutionary computing, cellular automata, genetic algorithms, neural networks; programming AI applications using Prolog, LISP, and/or using frameworks in Java. Requires extensive programming. 3 Cr.
CSC 542 Electronic Commerce Technology (A)
Prerequisite: CSC 209 and (CIS 422 or CSC 422).Surveys electronic commerce technologies and realities. Studies defining tools of e-business to understand the manner in which users, tools, needs and opportunities interact. Includes these topics: the infrastructure of e-commerce and the design and implementation of e-business portals using network and database technologies, data/Web mining and security/encryption techniques for finding and negotiating with trading partners to execute electronic transactions. 3 Cr.
CSC 544 Introduction to Parallel Computing (A)
Prerequisites: CSC 406 and MTH 481.Deals with design and analysis of parallel algorithms. Includes these topics: parallel models of computation; measures of complexity; parallel algorithms for selection, searching, sorting, and merging; matrix algorithms; transitive closure; connected components; and shortest path, minimum spanning tree and routing algorithms. Provides hands-on experience in a parallel programming environment. 3 Cr.
CSC 583 Theory of Computation (A)
Prerequisites: CSC 203 and MTH 481.Studies formal languages and theory of automata with an emphasis on Church's thesis, "algorithm = machine" point of view. Includes these topics: regular expressions and context-free languages, finite and pushdown automata, Turing machines, computability, undecidability and complexity of problems. 3 Cr. Spring.
CSC 595 Topics in Computer Science (A)
Prerequisite: Published prior to registration each semester.As an advanced course, addresses current topics in the field. Each offering is motivated by the expertise of the instructor and students' interests. Expects students to complete a major research, design or development project. Descriptions and prerequisites are published prior to the registration period for the course. Past topics covered included: networking, human factors, computational linguistics, advanced architecture, software engineering, logic programming, program validation, object-oriented programming and parallel algorithms. 3 Cr.
CSC 599 Independent Study in Computer Science (A)
Prerequisite: Instructor's permission.Arranged in consultation with the instructor-sponsor prior to registration. 1-3 Cr. By Arrangement.
CSC 601 Concepts of Programming Languages (A)
Prerequisites: CSC 401, CSC 406 and MTH 481.Presents an advanced mathematical treatment of the underlying principles of programming languages and comparison of the issues as they relate to the main language paradigms: procedural, object oriented, declarative, functional and concurrent. Covers: lexical vs. syntactic vs. semantic structures of languages; objects and classes, inheritance, dynamic binding, and implementation issues; Lambda calculus and recursive functions; logic resolution and unification; and parallel processing, co-routines and message passing. 3 Cr.
CSC 611 Advanced Computer Architecture (A)
Prerequisites: CSC 411, MTH 346 and MTH 481.As an advanced course in architecture of high-performance computer systems, emphasizes quantitative analysis. Includes: measuring performance, cost trends, CISC versus RISC, pipelined processors, branch penalties and prediction, memory hierarchy, cache organization, virtual memory, parallel processors, SIMD/MIMD systems, interconnection networks and distributed computing. 3 Cr.
CSC 683 Automata Theory and Formal Languages (A)
Prerequisite: MTH 481.Provides an advanced treatment of the mathematical foundations of computer science, including the theories of automata, formal languages, computability and computational complexity. Includes some of the fundamental material regarding finite automata and context-free grammars as part of regularly accredited undergraduate programs, covering the material more quickly in this course. 3 Cr.