CSC: Computer Science

College of the Sciences and Mathematics

How to Read Course Descriptions

CSC 512. Computer Programming I. 3 Credits.

The principles of algorithmic problem solving are introduced using the Java language. This course teaches programming techniques which involve elementary data and control structures.
Typically offered in Fall, Spring & Summer.

CSC 515. Introduction to Web Development. 3 Credits.

This course covers website design and programming issues. It develops and uses the Php language and MySQL database for server-side programming and information storage/retrieval. The JavaScript language is used for client side programming.
Typically offered in Fall, Spring & Summer.

CSC 516. Introduction to Data Structures and Algorithms. 3 Credits.

This course introduces the definitions, implementations, and applications of the most basic data structures used in computer science. The concept of abstract data type is introduced and reinforced by the object concept of C++.
Pre / Co requisites: CSC 516 requires a prerequisite of CSC 512.
Typically offered in Fall, Spring & Summer.

CSC 520. Foundations of Computer Science. 3 Credits.

This course offers an advanced treatment of many of the theoretical areas underlying other computer science subjects.
Typically offered in Fall.

CSC 525. Operating Systems. 3 Credits.

This course covers the basic features of operating systems. Examples will be drawn from UNIX and other operating systems. This course includes an intensive study of the UNIX operating system by way of the UNIX kernel commands and utilities.
Typically offered in Spring.

CSC 530. Data Structures. 3 Credits.

This course builds on rudimentary understanding of linked structures and develops complex data structures such as trees, hash tables, graphs, etc. It also introduces the basics of asymptotic analysis of running time and space in order to provide the justification for various data structures.
Typically offered in Fall.

CSC 535. Networks and Data Communication. 3 Credits.

This course provides in-depth studies of various aspects of modern telecommunication systems such as network design, network implementation, serial port communications, and user interfaces.
Typically offered in Fall.

CSC 540. Programming Languages. 3 Credits.

This course introduces the theoretical and practical foundations of programming languages from the point of view of design and implementation.
Typically offered in Spring.

CSC 545. Database Systems Concepts. 3 Credits.

This course emphasizes recent technological advances in database management systems. The course centers around data models and languages for those data models. Special attention is paid to relational and object-oriented data models and systems which implement these.
Typically offered in Spring.

CSC 555. Software Engineering. 3 Credits.

This courses focuses on various software processes, including the Personal Software Process and agile processes (like eXtreme Programming and Scrum). Another major focus is software assurance - processes for building secure software. Other topics include quality assurance, work culture issues and the professional responsibilities of software engineers.
Typically offered in Fall.

CSC 560. Analysis of Algorithms. 3 Credits.

This course introduces the methods to analyze the efficiency of computer algorithms in terms of their use of both space and time. Algorithmic design techniques, such as divide and conquer, greedy methods, and dynamic programming are illustrated throughout the course. The theory of NP-completeness and tractability is introduced.
Pre / Co requisites: CSC 560 requires a prerequisite of CSC 520.
Typically offered in Spring.

CSC 565. Compiler Design. 3 Credits.

An in-depth study of the principles and design aspects of programming language translation. Students will design and implement a compiler using standard UNIX-based compiler tools for a small but representative language.
Pre / Co requisites: CSC 565 requires prerequisite of CSC 520 and CSC 530.
Typically offered in Fall.

CSC 575. Artificial Intelligence. 3 Credits.

Artificial Intelligence (AI) aims to reproduce or simulate the intelligent capacities of human beings such as forming plans of action and conversing in English. This course will combine theoretical, practical, and programming aspects of AI. Common Lisp will be used for programming projects.
Pre / Co requisites: CSC 575 requires prerequisite of CSC 520.
Typically offered in Fall.

CSC 576. Data Science. 3 Credits.

This course will explore the fundamentals of data science by using current data mining and machine learning algorithms such as decision trees, regression, support vector machines, clustering, and neural networks for prediction and inference. Web scraping techniques to create datasets will be introduced. Data preprocessing techniques and data visualization will also be introduced. Programming assignments will be coded in a modern programming language, such as Python.
Pre / Co requisites: CSC 576 requires a prerequisite of CSC 520.
Typically offered in Fall.

CSC 577. Natural Language Processing. 3 Credits.

This course introduces the foundations of Natural Language Processing (NLP), from theoretical fundamentals of language models and grammars to the application of algorithms. The course will draw from the following NLP topics: word and sentence tokenization, spelling correction, question answering, text classification, and sentiment analysis. Programming assignments will utilize unstructured text and freely available corpora, be coded in a modern programming language, such as Python, and will utilize modern NLP toolkits such as NLTK and CoreNLP.
Typically offered in Spring.

CSC 581. Topics in Computer Science. 3 Credits.

This course will allow instructors to teach a 500-level (not research-oriented) course in a computer science topic not specified in the current course list. Different topics will be taught as different sections of this course.
Typically offered in Winter.
Repeatable for Credit.

CSC 582. Topics in Information Systems. 3 Credits.

A survey of topics in information systems reflecting the current technological developments and research interests.
Typically offered in Spring.
Repeatable for Credit.

CSC 583. Topics in Computer Security. 3 Credits.

A survey of topics in Computer Security reflecting current technological developments and research interests in the field.
Typically offered in Spring.
Repeatable for Credit.

CSC 584. Topics in Web Technology. 3 Credits.

The detailed course content varies from one semester to another. The topic will be decided based on the technological development in the field and the scholarly interests of the faculty. This course may be repeatable for different topics. Students will learn to develop individual projects.Topics discusses include but are not limited to: Server-Side Programming using Unix or Windows platform; ASP.NET with C#; Google Search Engine Optimization; Client-Side Web Programming using Content Management Systems (WordPress, Joomla, or Drupal); Other emerging technologies.
Typically offered in Summer.
Repeatable for Credit.

CSC 585. User Interfaces. 3 Credits.

This course introduces the technical principles of User Interfaces (UI) using the Front-End development of web-based applications as an example. Students will take the procedure from HTML, CSS, and JavaScript for the front-end and then shift their attention to using React.js for the front-end of Single Page Applications. They will focus on the "V" portion in the Model-View-Controller (MVC) architecture. The course features a modern server-side scripting platform such as Node.js or Express.js although the main focus is on the front-end View Engine React.js. Most of the course work is targeting developing the front-end for complex, large-scale web application systems.
Typically offered in Spring.

CSC 586. System Administration and Security. 3 Credits.

This course is a hands-on study of the essentials of operating system administration with a strong focus on systems security. Approximately half of the class time is spent in the lab. Students work as system administrators on projects devised to illustrate basic system and security administrative features. Additionally, various script languages are taught to provide the basis for understanding and extending the system capabilities.
Typically offered in Summer.

CSC 587. 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 it's V8 search engine with Node.JS. Since then, JavaScript has become a full-stack scripting language from the client-side to the server-side. Starting from building a web site without programming, students will be guided with hands-on labs and develop a website using Node.JS and EJS for the front-end.
Pre / Co requisites: CSC 587 requires a prerequisite of admittance into the master's degree program or web certificate program.
Distance education offering may be available.
Typically offered in Winter.

CSC 588. Wireless Programming and Security. 3 Credits.

This course provides an overview on wireless networking principles and technologies from the viewpoint of computer science majors. Since the subject of wireless communications covers many aspects including cellular telephone network, cordless phone, personal data assistant (PDA), satellite communication, even pager and two-way radio, this course cannot cover all of these systems. Instead, the major themes will focus on the fundamentals and principles. In particular, this course will cover the major differences between wired networks and wireless networks, the protocol stacks of wireless networks, and wireless data services. Security issues and protocols will also be discussed.
Pre / Co requisites: CSC 588 requires a prerequisite of CSC 535.
Typically offered in Fall.

CSC 600. Advanced Seminar. 3 Credits.

This is a research-oriented course which will involve an investigation into an advanced and specialized topic determined according to faculty and student interest.
Typically offered in Spring.
Repeatable for Credit.

CSC 603. Advanced Seminar in Security. 3 Credits.

An in-depth investigation into specific areas of Computer Security reflecting research interests and significant technological developments in the field.
Typically offered in Fall.
Repeatable for Credit.

CSC 604. Advanced Seminar Web Technology. 3 Credits.

The detailed course content varies from one semester to another. The topic will be decided based on the technological development in the field and the scholarly interests of the faculty. Topics discusses include but are not limited to: Server-Side Programming using Unix or Windows platform; ASP.NET with C#; Google Search Engine Optimization; Client-Side Web Programming using Content Management Systems (WordPress, Joomla, or Drupal); Other emerging technologies. Students must proactively search for emerging technologies and prepare to do a presentation and/or conduct individual/group projects.
Typically offered in Summer.

CSC 605. Internship in Computer Science. 3 Credits.

Provide the student with professional development and work experience in the computer science field.
Pre / Co requisites: CSC 605 requires prerequisites of CSC 520 and CSC 530 and CSC 540 and CSC 560.
Typically offered in Fall, Spring & Summer.

CSC 610. Independent Research. 3 Credits.

The student may work in one of three directions: thesis, individual project, or team project. (See 'Thesis Options')
Consent: Permission of the Department required to add.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CSC 620. Thesis. 3 Credits.

Contact department for more information about this course.
Consent: Permission of the Department required to add.
Typically offered in Fall, Spring & Summer.