This focus track provides essential training in the foundations of computing, data storage and information processing. With this foundation, graduates of the program can easily adapt to and create new information technologies, new computing paradigms, and new ideas for applying computer systems.

CSC 241

INTRODUCTION TO COMPUTER SCIENCE I

An introduction to problem solving, algorithms and structured programming using a higher-level programming language. The course will focus on skills for developing algorithms, and for writing and debugging programs. Students will learn how and when to use loops, conditionals, and functional abstractions in the context of problems motivated by real world applications. PREREQUISITE(S): MAT 130 or Mathematics Diagnostic Test placement into MAT 140.

CSC 242

INTRODUCTION TO COMPUTER SCIENCE II

An intermediate course in problem solving, algorithms and programming. Programming skills are further strengthened through more complex and larger programming assignments. The assignments will also be used to introduce different Computer Science areas (e.g. a Client/Server application for the Distributed Systems area). Classes and object oriented programming are motivated and introduced. PREREQUISITE(S): CSC241

CSC 300

DATA STRUCTURES IN JAVA I

This is the first course in a two-course sequence on data structures using Java. The course introduces basic Java programming, reviews recursion, introduces asymptotic notations, and focuses mainly on linear data structures including arrays, linked lists and their variants, stacks and queues, and data structures supporting disjoint-set operations. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications covered highlight and exploit the unique characteristics of the data structures, and emphasize problem solving and recursive thinking. Prerequisite(s): CSC 242 or CSC 243

CSC 301

DATA STRUCTURES IN JAVA II

This is the second course in a two-course sequence on data structures using Java. The course focuses mainly on the following data structures, their analysis, and their applications: trees (search trees, balanced search trees), heaps, associative arrays, hash tables, and data structures for representing graphs. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications discussed highlight and exploit the unique characteristics of the different data structures, and emphasize problem solving and recursive thinking. Prerequisite(s): CSC 300

MAT 140

DISCRETE MATHEMATICS I

Combinatorics, graph theory, propositional logic, singly-quantified statements, operational knowledge of set theory, functions, number systems, methods of direct and indirect proof.
Prerequisites:
MAT 130 or above or equivalents or placement by test is a prerequisite for this class.

CSC 373

COMPUTER SYSTEMS I

A course on computer systems topics, focusing on machine-level programming and architecture and their relevance for application programming. Information representations, assembly language, C programming, and debuggers, processor architecture. PREREQUISITE: (CSC 383 or CSC 393 or CSC 300) and Math 140

CSC 374

COMPUTER SYSTEMS II

A course on computer systems topics, focusing on operating systems components and their relevance for application programming. Caching, memory hierarchy, performance optimization, linking, processes, virtual memory, dynamic memory allocation, system level I/O. PREREQUISITE: CSC 373