Teaching and training

Lectures given at South African Universities

Course presented at Meraka Institute

  • 2005: uClinux (embedded linux) course
    • Day 1: Survey of embedded operating systems - why uClinux, The uclinux environment - the directory structure
    • Day 2: Using the configuration tools for the kernel and user applications, Adding user application to uClinux
    • Day 3: The cross compiling tool chain (gcc, as, ld, objdump, objcopy), Memory architecture of the arm7tdmi processor - configuring uclinux for the arm
    • Day 4: To "Boot loader" or not to "Boot loader, Hardware access and device drivers
    • Day 5: Debugging applications with gdb, Downloading applications to the development kit using JTAG
  • 2007: How to build a Mesh network - Training for Linknet Zambia - DIY guide on which training was based is available here.
  • 2011: 8 week course on Unix C/++ programming
    • Week 1: C: Formatting output, constants, functions, scope
    • Week 2: C: Compile, link and make, C pointers
    • Week 3: C: Parameter passing, allocating memory, pointers to pointers and arrays of pointers
    • Week 4: C: Line input and output, structures and unions, library functions
    • Week 5: C++: Namespace, new constants, casting, default function arguments, reference variables,
    • Week 6: C++: Dynamic memory Formatting, Arrays, C++ structures, Classes
    • Week 7: C++: Constructors, Destructors, 'this' object
    • Week 8: C++: Inheritance, Static members, Friends, exceptions, friends, function overloading, operator overloading

Cources presented at University of Cape Town

  • 2016: Networks for developing regions (Net4D)
    • Networking challenges, constraints and opportunities in developing regions
      • The current state of Internet in the world
      • Constraints in developing regions (Environmental, infrastructural constraints, regulatory, cultural, economic, political, language, technical)
    • Connectivity options for developing regions - alternatives to commercial networks
      • Wireless Mesh Networks
      • Delay Tolerant Networks
      • TV White Spaces
      Network architecture options for developing regions
      • Customized Internet applications for unreliable networks
      • Smart caching strategies
      • Peer-to-peer sharing architectures
    • Network performance, Traffic analysis and network maintenance in developing regions
      • Monitoring: performance analysis and fault detection techniques
      • Network traffic pattern analysis techniques
    • Case studies of usage and performance of networks in developing regions
      • Case Linknet, Macha, Zambia
      • Case AirJaldi, Dharamsala

    Courses I have tutored for at UCSB

    • Fall 2008: CS12: Programming Methods in C (Michael Costanzo): Introduction to the UNIX system, C programming language, and data structures. Topics include: introduction to the UNIX system, C shell and shell scripts; UNIX file system and utilities; stacks, queues, lists, and trees
    • Spring 2009: CS130A: Data Structures and Algorithms I (Yuan-Fang Wang): The study of data structures and their applications. Correctness proofs and techniques for the design of correct programs. Internal and external searching. Hashing and height balanced trees. Analysis of sorting algorithms. Memory management. Graph traversal techniques and their applications
    • Fall 2009: CS60: Introduction to C, C++, and UNIX (Michael Costanzo): Advanced topics in object-oriented computing. Topics include encapsulation, data hiding, inheritance, polymorphism, compilation, linking and loading, memory management, and debugging; recent advances in design and development tools, practices, libraries, and operating system support.
    • Spring 2010: CS40: Introduction to the theoretical underpinnings of computer science (Wim van Dam). Topics include propositional predicate logic, set theory, functions and relations, counting, mathematical induction and recursion (generating functions).