Computer Science

Classes

CSC105: Computer Programming I: Python

In this introduction to the field of computer science, students use projects and teamwork to design, implement, and test programs in Python. Programming style, expression, and documentation are emphasized. Object-oriented programming methodology, graphical user interfaces, debugging techniques, string processing, and basic searching and sorting algorithms are covered. Python provides an introduction to programming for students in any academic discipline.

CSC110: Computer Programming I: Java

In this introduction to the field of computer science, students use projects and teamwork to design, implement, and test programs in Java. Programming style, expression, and documentation are emphasized. Object-oriented programming methodology, graphical user interfaces, debugging techniques, string processing, and arrays are covered. Java provides an introduction to programming for students in any academic discipline.

CSC120: Computer Programming I: C++

Students use projects and teamwork to design, implement, and test programs in C++. Programming style, expression, and documentation are emphasized. Object-oriented programming methodology, graphical user interfaces, debugging techniques, pointers, simple recursion, and string processing are covered.

CSC125: Procedural Programming

Students design programs in C using a procedural design paradigm that examines issues associated with low-level programming such as explicit memory management, efficiency, pointers, the compilation process, and debugging. C programs are run in a Unix/Linux environment.

CSC130: Computer Programming II: Java

Students use projects and teamwork to design, implement, and test large computer programs in Java, with emphasis on programming style, expression, and documentation. Object-oriented programming methodology, abstract data types, data structures, internal searching and sorting methods, exceptions, generics, multithreading, and simple recursion are covered. Students analyze the efficiency and compare times of recursive and non-recursive sorts and searches, as well as searches of graphs using stacks and queues.

CSC210: System Software & Assembly Language Programming

Students analyze the design and implementation of the components of software used to run a computer including assemblers, compilers, linkers, loaders, operating systems, debuggers, and macro processors. The general concepts of system software are related to the specific implementation of Intel assembly language (MASM) and Java on a Windows system. Students use hands-on projects and teamwork to design, implement, and test programs in Intel assembly language and to use assembly language procedures in a Java program. (This course does not satisfy the mathematics general education requirement.)

CSC230: Data Structures

Students use data structures and recursion in Java to solve complex problems. Abstract Data Types (ADTs) including lists, stacks, queues, tables, sets, maps, heaps, and trees are examined and implemented. Students analyze the theoretical and actual running times of the alternate ADT implementations as well as internal/external searching and sorting algorithms, graph algorithms, and hashing.

CSC240: Introduction to Computer Systems

Students investigate how computer systems execute programs, store information, and communicate in order to become more effective programmers in terms of performance, portability, and robustness. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. 4 class hours.

CSC250: Computer Organizational & Architecture

Students acquire an understanding and appreciation of a computer system’s functional components, their characteristics, performance, and interactions. Students evaluate computer architecture to develop programs that can achieve high performance through a programmer’s awareness of parallelism and latency. In selecting a system to use, students analyze the tradeoff among various components, such as CPU clock speed, cycles per instruction, memory size, and average memory access time. Topics include digital logic, assembly language machine organization, and hardware-level C and assembly language programming.