Some of these courses are listed below. Please contact me if you want to enroll in any of these courses. Or if you want me to develop and deliver customized content for your company.
Introduction to Linux OS for MS Windows Users (17 lectures 1.5 hrs each)
The purpose of this course is to introduce the Linux OS to Microsoft Windows
users/programmers. The course has a steep learning curve, starting with basic
concepts of Linux usage, and then rapidly moving towards advanced programming
concepts of multi-threading, concurrency, semaphores, interfacing with hardware
devices, and real-time programming. To facilitate such a steep learning curve,
the course is designed to be goal-oriented and top-down. That is, the
participants will work on six practical programming projects of increasing
complexity. All six projects will be described during the first lecture –
participants will know exactly what they will achieve during each module
(roughly a two-lecture period), which is the time-window of each project.
Lecture content of the first four modules will be geared towards their
corresponding projects. Towards the end of the course, all participants will be
familiar with the Linux OS. They will have
developed, in Project 5, the basic infrastructure needed for cloud computing
(with a registration node, and multiple computing and job management nodes
utilizing features of inter-networking, multi-threading, locking, etc.), which
they will customize for a distributed computation task of their choice in
Project 6. The programming language used throughout the course is C.
One-day Workshop on Software Testing
The purpose of this one-day workshop is to introduce the participants to
fundamentals of software testing, such as category-partitioning, test oracles,
test coverage including MC/DC coverage, code instrumentation, unit testing,
acceptance testing, user stories, and regression testing. Lectures on these
fundamentals are supported by hands-on exercises in which participants use unit
testing tools to develop a few test cases, instrument the code of the
application under test to collect data to be used for code coverage analysis,
and execute the tests. The workshop covers advanced topics in test automation
as well, including pair-wise testing, AI planning, iterative relaxation
event-flow graphs, GUI testing, predicate & heuristic based testing,
"daily/nightly" builds and smoke tests, network protocol and web testing, and
performance testing. In order to provide a holistic treatment of the topic, the
workshop discusses testing broadly within the context of Software Engineering
Requirements (UML), Design, Sequence Diagrams, Use Cases, and component-based
software engineering.