This course is the first part of the course on problem solving, algorithm design, and programming. Here, students learn programming fundamentals. Together with an overview of the computing profession, students learn the rigor of logic formulation with strong emphasis on proper use of variables, branching structures, loop structures, algorithm formulation, subroutine development and use, structures, and file processing.

This course will address discrete event simulation including random number generation, random variate generation, process-oriented simulation, elementary queueing models, network of queues, and applications to performance evaluation of computer systems.