Computer Science (CSC)

College of the Sciences and Mathematics

How to Read Course Descriptions

CSC 110. Fundamentals in Computer Science. 3 Credits.

Introduction to the fundamentals of computing. Topics include surveys of the following sub-areas of computer science: artificial intelligence, hardware/operating systems, programming languages/software, ethics/social issues, history, electronic communications, problem solving, and programming. The course includes laboratory projects in application software, programming, and electronic communication, as well as a report on one of the first four areas above.
Gen Ed Attribute: Science Distributive Requirement.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

CSC 115. Introduction to Computer Programming. 3 Credits.

The art and science of computing are introduced using a structured programming language, such as Visual BASIC. Topics include looping, branching, arrays, and program development.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 141. Computer Science I. 3 Credits.

An introduction to programming using Java. Topics covered include basic program layout, primitive data types and strings, control structures (loops and decisions) methods, parameters, and text file input/output.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 142. Computer Science II. 3 Credits.

This course introduces the design and implementation of classes and objects, arrays using primitive types and Strings, array of objects, sorting and searching through arrays, recursion, aggregate objects and an introduction to graphical User Interfaces (GUIs).
Pre / Co requisites: CSC 142 requires prerequisite of CSC 141.
Typically offered in Fall & Spring.

CSC 220. Foundations of Computer Science. 3 Credits.

Topics include regular and context free grammars and languages, computational logic, finite state machines, and parsing.
Pre / Co requisites: CSC 220 requires prerequisites of MAT 151 and MAT 161.
Typically offered in Fall & Spring.

CSC 240. Computer Science III. 3 Credits.

This course focuses on more advanced topics in object-oriented programming, including project design, planning, and testing using milestones and checklists. Programming topics include text processing (including StringBuilder and StringTokenizer classes), inheritance, polymorphism, abstract classes, interfaces, generic classes, exception classes, exception throwing and handling, random access files, serialization and an introduction to some basic data structures, such as collection classes and linked lists.
Pre / Co requisites: CSC 240 requires prerequisites of CSC 142.
Typically offered in Fall & Spring.

CSC 241. Data Structures & Algorithms. 3 Credits.

Data structures and related algorithms are studied using object-oriented programming, such as Java. Topics include data abstraction, recursion, lists, stacks, queues, linked lists, trees, hashing, searching and sorting algorithms, and the evaluation of algorithm efficiency.
Pre / Co requisites: CSC 241 requires prerequisites of CSC 240 and MAT 151, MAT 161.
Typically offered in Fall & Spring.

CSC 242. Computer Organization. 3 Credits.

This course teaches introductory topics in computer architecture and hardware design as well as the basics of assembly language. Software is provided to assemble, run, and debug assembly language programs. Additionally, a C compiler demonstrates a realistic usage of pointers, and bitwise operations of assemble language.
Pre / Co requisites: CSC 242 requires prerequisites of CSC 142 and MAT 151.
Distance education offering may be available.
Typically offered in Fall & Spring.

CSC 300. Cooperative Programming. 3 Credits.

The student works for an organization involved in the computer field. The student may do work in various areas of the discipline such as programming, networking, or customer support.
Pre / Co requisites: CSC 300 requires prerequisites of CSC 141 and CSC 142 and CSC 240 and CSC 241 and MAT 151 and MAT 161.
Typically offered in Fall, Spring & Summer.

CSC 301. Computer Security I. 3 Credits.

An introduction to Computer Security and the ethical underpinnings of security. The basic objectives of creating a secure system, attack methods and defenses are discussed.
Pre / Co requisites: CSC 301 requires a prerequisite of CSC 240.
Typically offered in Fall & Spring.

CSC 302. Computer Security II. 3 Credits.

Principles and current technological developments in computer security - a continuation of Computer Security I. Topics include: security requirements, attack models, cryptography, authentication, and system security. Students will also learn practical knowledge through hands-on lab experience.
Pre / Co requisites: CSC 302 requires successful completion of CSC 301.
Typically offered in Spring.

CSC 317. Visual Programming. 3 Credits.

Principles of visual programming. A second computer language (Visual Basic) is utilized, and a major theme, such as steganography or video games, is covered. Students must write two major projects of significant complexity.
Pre / Co requisites: CSC 317 requires a prerequisite of CSC 240.
Typically offered in Spring.

CSC 321. Data Base Management Systems. 3 Credits.

Characteristics of generalized database management systems. Surveys of different database models that are currently used. The design and implementation of a database system.
Pre / Co requisites: CSC 321 requires prerequisites of CSC 142 and CSC 241.
Typically offered in Spring.

CSC 331. Operating Systems. 3 Credits.

This course is a general survey of elements of operating systems with in-depth studies of certain features of specific operating systems. Elements of concurrent programming are studied, such as the mutual exclusion problem, semaphores, and monitors. Additionally, the following topics are covered: process scheduling and deadlock avoidance; memory management issues such as paging and segmentation; organization and protection of file systems.
Pre / Co requisites: CSC 331 requires prerequisites of CSC 220 and CSC 240 and CSC 241 and CSC 242.
Typically offered in Fall.

CSC 335. Data Communications and Networking I. 3 Credits.

An overview of the various aspects of modern data and telecommunications. Discussion of the hardware and software facets of the transmission of information in the forms of voice, data, text, and image. Topics include communication protocols, transmission technologies, analog/digital transmission, communications media, public data networks, LANs, and ISDN.
Pre / Co requisites: CSC 335 requires prerequisites of CSC 240 and CSC 241.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

CSC 336. Data Communications and Networking II. 3 Credits.

An in-depth study of various aspects of modern data communication systems. Discussion of serial port communications, network performance and design, and Internet protocols. Topics include PC serial port hardware (RS-232, UART) and software (XMODEM protocol), queuing theory, X.25, frame relay, SMDS, BISDN, ATM, TCP/IP, sockets and Internet applications.
Pre / Co requisites: CSC 336 requires prerequisite of CSC 335.
Typically offered in Spring.

CSC 345. Programming Language Concepts/Paradigms. 3 Credits.

An examination of the conceptual underpinning of programming languages and of the paradigms into which they fall. Topics will be drawn from those comprising the field of programming language such as abstraction, bindings, concurrency, design, encapsulation, history, representation, storage, and types. Programming projects will focus on languages within the functional, declarative, and object-oriented paradigms: such as Common Lisp, ML, Prolog, CLOS ; rather than the familiar imperative paradigm.
Pre / Co requisites: CSC 345 requires a prerequisite of CSC 220 and CSC 241.
Typically offered in Fall.

CSC 400. Internship. 6 Credits.

The student works in the area of computer science that is his or her specialty.
Pre / Co requisites: CSC 400 requires prerequisites of CSC 141 and CSC 142 and CSC 240 and CSC 241 and MAT 151 and MAT 161.
Consent: Permission of the Department required to add.
Typically offered in Fall, Spring & Summer.

CSC 402. Software Engineering. 3 Credits.

This course explores a variety of processes for developing software, including the PSP from the Software Engineering Institute, the SEI's CMMI, and agile processes, including eXtreme Programming and Scrum. A special emphasis is on how software processes can be designed to help software engineers to develop more secure code. Ethical, professional and workplace issues are also covered, as well as strategies for testing software in PSP and agile environments. Teamwork is an important element in this course, and the team work on developing a documented software process for their company.
Pre / Co requisites: CSC 402 requires prerequisite of CSC 241.
Typically offered in Fall & Spring.

CSC 416. Design/Construction Compilers. 3 Credits.

Covers the basic topics in compiler design including lexical analysis, syntax analysis, error handling, symbol tables, intermediate code generation, and some optimization. Programming assignments will build various pieces of a compiler for a small language.
Pre / Co requisites: CSC 416 requires prerequisites of CSC 220 and CSC 240 and CSC 241 and CSC 242.
Typically offered in Fall.

CSC 417. User Interfaces. 3 Credits.

This course deals with database-driven graphical user interface applications. The Model-View-Controller software paradigm is used as a guiding principle for the applications developed. The course features applications using Java-based components as well as web-based components with a modern server-side scripting language such as PHP. Most of the course work is based on developing a complex, large scale web database system with the goal of implementing this system within a web application framework.
Pre / Co requisites: CSC 417 requires prerequisites of CSC 241.
Typically offered in Spring.

CSC 481. Artificial Intelligence. 3 Credits.

Artificial Intelligence (AI) is concerned with the replication or simulation on a machine of the complex behaviors associated with intelligence. Topics will be drawn from any of those comprising the field of AI such as agent architectures, automatic truth maintenance, constraint satisfaction, expert systems, fuzzy logic, games, genetic algorithms, knowledge representation, machine learning, neural networks and connectionism, natural language processing, planning, reasoning, robotics, search, theorem proving, and vision. Projects requiring coding will focus on an AI language such as Common Lisp or Prolog.
Pre / Co requisites: CSC 481 requires prerequisites of CSC 220 and CSC 241.
Typically offered in Fall.

CSC 490. Independent Project in Computer Science. 3 Credits.

The student designs and implements a software system. Project problems are drawn from local industry and university departments. A computer science faculty member supervises each project.
Consent: Permission of the Department required to add.
Gen Ed Attribute: Writing Emphasis.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CSC 495. Topics in Computer Science. 3 Credits.

Topic announced at time of offering.
Consent: Permission of the Department required to add.
Typically offered in Summer.
Repeatable for Credit.

CSC 496. Topics in Complex Large-Scale Systems. 3 Credits.

Topics in large scale systems. Topics announced at the time of offering.
Typically offered in Fall.
Repeatable for Credit.

CSC 499. Independent Study in Computer Science. 3 Credits.

In conjunction with the instructor, the student selects study topics via literature search.
Consent: Permission of the Department required to add.
Gen Ed Attribute: Writing Emphasis.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.