Computer structure, machine representation of data, addressing and indexing, computation and control instructions, assembly language and assemblers; procedures (subroutines) and data segments, linkages and subroutine calling conventions, loaders; practical use of an assembly language for computer implementation of illustrative examples.
3 hr/wk.
Fundamentals of computer organization and digital logic. Boolean algebra, number systems and codes, combinational logic design principles, basic gates and components, flipflops and latches, counters and state machines. Assembly language and assemblers; procedures and data segments, linkages and subroutine calling conventions, loaders; practical use of an assembly language.
3 lect. 2 lab. Hrs/week
Computer Engineering students who have completed CSC 21000 and EE 21000 are considered to have met the requirements of equivalency to CSC 21100.CSC 21100: Fundamentals of Computer Systems
Extension of the knowledge of algorithm design and programming gained in CSC 10300 with continuedemphasis on the logic underlying the transition from specification to program. Particular attention is paid to issues arising in the implementation of larger programs: introduction of data structures and data abstraction; the basics of object-oriented programming. Introduction of recursion as a design tool. Introduction of complexity analysis.
2 class, 2 rec. hr./wk.
Overview of applicable discrete and stochastic foundations: combinatorics, probability, and Monte Carlo methods. Descriptive statistics for data analysis. Random variables, mathematical expectation. Study of the constant density and random number generator, normal, exponential, as well as Bernoulli, Binomial and Poisson distributions. Limit theorems and sample statistics. Foundations of discrete event simulation, computational examples.
3 hr./wk.
Measuring algorithmic complexity (O-Notation); searching and sorting algorithms and their complexity; tree and graph algorithms and their complexity; classes of algorithms, such as divide-and-conquer, backtracking, greedy, probabilistic, etc. Computational complexity; the classes P and NP.
3 hr./wk.
Accelerated introduction to Java programming language and its standard library usage. The course covers coding principles, graphic user interface, event-driven programming, design patterns, security issues, and network and mobile computing capabilities. This course also introduces application development under the Android mobile operating system. A small-scale, team-based application development including software specifications and unit and user testing is required.
3 hr./wk.