Contains all the Fourth Year CS subjects offered during the first semester

Supercomputers have achieved great performance speedup due to the process technology of single core processors. But soon, the manufacturing process would push single core processors out of favor to multi-core processors. Thus, computational power of most recent processor is achieved through parallel computing. Although parallel computing is referred to tightly linked processor cores, distributed computing which is another form of parallel computing owes its advances to networked computers sharing resources. To maximize the computing capability, parallel and distributed computing with the interaction of hardware and software is an essential must.

Computational studies in natural sciences, mathematics and engineering are now immense due to the ever increasing dependence on computer simulations and computational ability. Computational science heavily lean on using Python programming language since it provides powerful tools in a relatively clean, simple, and compact syntax. It is quite similar to Matlab with numerous libraries that are intended for data handling, visualization and manipulation, scientific computing algorithms, symbolic computing etc. With the world being packed with data on scientific research and engineering, analyzing and visualizing these dataset are now of high demand.

This course covers programming using commonly used statistical software such as R and Stata for data management and analysis.


Many basic concepts and strategies in research transcend the boundaries of specific academic areas, and such concepts and strategies are at the heart of this course. To some degree, certainly, research methods do vary from one subject area to another: A biologist might gather data by looking through a microscope, a historian by examining written documents from an earlier time period, and a psychologist by administering certain tests or systematically observing people’s behavior. Otherwise, the basic approach to research is the same. Regardless of the discipline, the researcher identifies a question in need of an answer, collects data potentially relevant to the answer, analyzes and interprets the data, and draws conclusions that the data seem to warrant.                                                                  - - - Paul D. Leedy and Jeanne Ellis Ormrod (2015) 




The course will introduce the models, theory, and algorithms associated with compiler design which can be applied to a wide range of problems in software design and software development.