CSC 118 (3) Programming Fundamentals

Prerequisite: Math 118 or Equivalent, CSC 115 or Equivalent. Co-requisite CSCL 118, This is the first course in the computer science programming sequence and is required of all computer science majors. Course objectives include: introduction to problem solving methods and algorithm development; definition of language syntax and semantics of a high level programming language (Java); and developing the ability to design, code, debug, document, and successfully execute programs. Topics include objects and classes, data types, applets and graphics, decision statements, iteration, methods, testing and debugging, arrays, sorting and searching, inheritance, interfaces and polymorphism. (F, S)

CSCL 118 (1) Programming Fundamentals Lab

Prerequisites: Math 118 or Equivalent, CSC 115 or Equivalent. Co-requisite CSC 118.
This lab is to be taken with the course CSC 118. The objective of the lab is to give the students hands-on experience on the topics covered in the CSC 118 class. Students will learn to use a text editor to write their programs and how to compile and run them. Students will be required to develop programs applying learned concepts such as object-oriented design, data types, decision-making, iteration, arrays, methods, inheritance and interfaces. (F, S)

CSCL 119 (1) Object-Oriented Programming Lab

Prerequisites: CSC 118, CSCL 118. Co-requisite: CSC 119.
Students explore, design, program, and analyze laboratory exercises of object oriented programming in a supervised setting. Laboratory submissions include not only software and data, but also short reports that are graded both for technical content and writing mechanics. (F, S)

CSC 212 (3) Advanced Programming in Java

Prerequisites: CSC 119, CSCL 119.
This course covers advanced topics for Java programmers. These topics include multithreading, collections, networking, advanced GUIs, database connectivity and JavaBeans. Students will be required to work on a project involving advanced Java programming.

CSC 214 (3) Programming for the Web

Prerequisites: CSC 119, CSCL 119.
This course is designed for students who have computer programming experience and who want to write Web applications. Students will learn the basic programming skills and languages that are needed to implement distributed Web applications. Topics include client-side programming techniques including HTML, Dynamic HTML and JavaScript; server-side programming techniques including CGI programming using Perl; and Web architectures and servers. (S)

CSCL 228 (1) Data Structures and Algorithms Lab

Prerequisites: CSC 119, CSCL 119, CSC 225. Co-requisite: CSC 228
Students explore, design, program, and analyze implementations of data structures and algorithms in a supervised setting. Laboratory submissions include not only software and data, but also short reports that are graded both for technical content and writing mechanics. (F, S)

CSC 312 (3) Advanced Computer Architecture

Prerequisites: CSC 216, CSCL 216.
The coverage of sequential computer architecture and organization is reviewed and continued. Topics include reduced instruction set architecture, memory hierarchy, interfacing and communication, and pipelining. Advanced computer architecture topics such as performance enhancements and parallel computers are also covered. (F, S)

CSC 323 (3) Algorithm Design and Analysis

Prerequisites: CSC 228, CSCL 228.
Formal methods are applied to the design and analysis of algorithms. The objective is to demonstrate how mathematical theory can be used to reduce trial and error in practical software development. Other topics include algorithmic strategies, graph and tree algorithms, and automata theory. (F, S)

CSC 332 (3) Compiler Construction

Prerequisistes: CSC 216, CSCL 216.
This course presents a general model of compilers, then uses this model to demonstrate the implementation of advanced features. Topics to be covered are logical analysis, syntax, and storage allocation.

CSC 403 (3) Computer Science Seminar

Prerequisite: Senior level with 15 hours of 300 level courses.
Discussion on trends in computer science. Students are required to prepare a paper and present it to their peers. Students who have participated in a Co-op Program will conduct a seminar discussing their work assignments.

CSC 425 (3) Parallel Computing.

Prerequisite: CSC325 Operating Systems. A study of the hardware and software issues in parallel computing. Theoretical and practical survey of parallel processing, including a discussion of parallel architectures, parallel programming languages, and parallel algorithms. Programming on multiple parallel platforms in a higher-level parallel language. It should also be useful for those who want to learn programming multi-core processors.

CSC 441 (3) Computers and Society

Prerequisites: CSC 325, CSC 330.
This course presents concepts of social value and valuation, describes the impact of computers on society; and presents tools and techniques which are applicable to problems posed by the social impact of computers. (F, S)

CSC 456 (3) Automata, Computability and Formal Languages

Prerequisites: CSC 350 and knowledge of discrete structures.
An introduction to formal models of computation. Assignments will develop students skills in understanding vigorous definitions in computing environments and in determining their logical consequences.

CSC 460 (3) Introduction to Artificial Intelligence

Prerequisite: CSC 323.
An introduction to the theory, research paradigms, implementation techniques, and philosophies of artificial intelligence. Introduction to Prolog, Lisp and expert system-shell programming.