Courses

Courses I took or am taking now:

CS101:

This course is an introduction to the craft of programming, techniques, practices and applications. By the end of the semester, students should have a basic understanding of programming concepts and constructs such as variables, numbers, strings, assignments, sequential versus selective execution, nesting loops, functions, arrays, reference parameters, etc. Furthermore, the student should have understood the importance of a structured approach to software development. The course includes lab sessions that take place once a week. Lab projects involve programming exercises that could be typically completed during the lab session. Additionally students are required to work in team to develop and demonstrate an interactive program as a class project.


CS102:

The purpose of this course is to develop an intermediate understanding of object-oriented programming concepts. Some sophisticated uses of object-oriented concepts (inheritance, polymorphism, encapsulation, multiple inheritance using interfaces, and Java Collection Frameworks, Generic classes and Recursion) and techniques for building systems of multiple interacting components. This course teaches students how to develop Java applications. Students will develop and test Java applications (typically) using Netbeans IDE.


CS175:

This course explores computer organization and digital logic. It covers an introduction to information representation and number systems. It introduces students to Boolean algebra and its usage in manipulation and minimization of Boolean functions. It covers combinational circuit analysis and design, multiplexers, decoders, comparators, and adder, in addition to, basic topics in computer organization such as CPU, Memory, Cache Memory, and Bus systems.


CS285:

The course introduces the students to mathematical logic, fundamental discrete structures, such as: sets, functions, relations and graphs. Mathematical reasoning and various counting techniques are also covered in the course. Throughout the course students apply the techniques they learn to simplified practical problems. This course prepares the students for higher level computing courses where these concepts are of fundamental importance


CS210:

This course introduces classical data structures and algorithms with emphasis on performance using asymptotic analysis of algorithms and complexity classes. Fundamental data structure includes lists, stacks, queues, heaps, trees, and graphs. The student will learn a variety of algorithms for searching, sorting, traversing and hashing. In addition, the course covers the application of these data structures and algorithms in real-life problems and implementing them in modern programming languages.


CS330:

This course explores the evolution, services, and structures of operating systems. It covers the basic concepts of operating system design and implementation and management of system resources such as Central Processing Unit (CPU), Input/output (I/O) devices, memory, and software. Examples given from modern operating systems such as Unix and Windows-driven operating systems are scrutinized.


SE201:

This course introduces software engineering as a discipline. It starts by a general introduction on the evolution of the discipline, then introduces the software life-cycle, software processes, requirement analysis, design, implementation, testing. This course covers the various Software Development Processes and requires students to appreciate and apply various aspects of software engineering principles. Classical Software Development Life-cycles from waterfall, spiral, incremental, evolutional to recent lean, agile methods and component based systems are covered. Special emphasis is put on quality and process improvement models such as CMM, PSP and TSP. This introduction is complimented by practical training to develop some of the basic software engineering skills. The skills covered include planning, estimation, scheduling, testing, debugging, quality management …etc


SE311:

This course covers software requirements, applied to a variety of types of software. It also covers techniques for discovering and eliciting requirements, requirements documentation standards, languages and models for representing requirements, analysis and validation techniques, including need, goal, and use case analysis, requirements in the context of system engineering, specifying and measuring external qualities: performance, reliability, availability, safety, security, etc., and requirements management: handling requirements changes, traceability, resolving feature interactions.


SE365:

This course covers the introduction to the concepts underlying the design of human-computer interaction: usability, direct manipulation, systematic design methods, user conceptual models and interface metaphors, design languages and genres, human cognitive and physical ergonomics, information and interactivity structures, design tools and environments. This course teaches how HCI affects the overall design of interfaces. The course covers four major parts: the foundation, the design process, models and theories, and think outside the box.


SE371:

This course covers the major aspects of full-stack web applications development. Full-stack web development involves the design and development of front-end and back-end applications in web framework. The course starts with a short introduction on the web applications architecture and underlying technologies, including HTML (focus on HTML 5), Cascading Style Sheets (CSS) and JavaScript for client-side scripting. The course then proceeds to cover server side Web application development in depth, including the multi-tier development model (data tier, business tier, presentation tier), web database development, authentication, navigation, working with XML, state management, caching, ...etc.


MATH111:

This course is designed to develop the topics of differential calculus. Emphasis is placed on limits, continuity and derivatives of algebraic and transcendental functions of one variable. The goal of this course is developing the student’s geometric insight into the concepts of differentiation, and applying these concepts to problem solving and “real world application”.


MATH113:

This course introduces the students to various topics such as the concept of anti- derivatives, integrals (definite and indefinite), the fundamental theorem of calculus and applications of definite integrals to find area, volume, arc’s length and surface area. Furthermore, the course continues in covering the concepts of sequences, infinite series, and Power series.


STAT101:

The course introduces a range of statistical concepts and techniques. Estimations of statistical distributions such as mean, variance, and their applications are examined. Also covered are random variables, frequency distributions, descriptive stats, discrete probability and probability theory.


PHY105:

This course introduces the principles of mechanics, energy and heat. The course covers physics and measurements, motion in one dimension, vectors, motion in two dimensions, laws of motion, circular motion and other applications of Newton's laws, work and energy, potential energy and conservation of energy, temperature and heat. The emphasis in this course is cultivating an understanding of natural phenomena through direct observation, reasoning and application of this knowledge.


PHY205:

This course goes deeper into a number of areas of physics. Topics include: electric field, electrostatic forces, Gauss's law, electric potential, capacitors and dielectrics, current and resistance, direct current circuits, magnetic fields, sources of magnetic fields, magneto-static forces, and optics, Faraday’s law, induction, alternating current circuits, geometrical optics, and optical instruments.


CHM101:

Chemistry 101 is an introductory course in general chemistry. The course governs basic concepts and terminology in chemistry to help students use the knowledge of chemistry in engineering applications such as product design, and to enhance investigative and observational skills