The true meaning of life is to plant trees under whose shade you do not expect to sit.

— Nelson Henderson

Teaching Appointments

  • Director of Undergraduate Studies

    School of Computer Science & Electronic Engineering, University of Essex


  • Asst. Professor

    Department of Computer Science, Uppsala University, Sweden


  • Asst. Professor

    Department of Computer Science, Aarhus University, Denmark


  • Headteacher

    College of Management Academic Studies, Tel Aviv


Lecturer @ Essex
Lecturer @ Essex


Supervised 32 doctorate and masters students

Jonathan Nicholson

Jonathan Nicholson

PhD Computer Science (2012)

CTO, ZiNET Data Solutions Ltd
Chtistina Maniati

Chtistina Maniati

MSc (With Distinction) Computer Science (2008)

Data Science Consultant, Capgemini
Epameinondas (Notis) Gasparis

Epameinondas (Notis) Gasparis

PhD Computer Science (2011)

CTO, The Singularity Lab
Vithun Kumar Gajendra

Vithun Kumar Gajendra

MSc Computer Science with Distinction (2010)

Software Developer, Expedia
Arun Das Abraham

Arun Das Abraham

MS Computer Science (2013)

Senior Application Engineer, Fybr
Sushrut Deo

Sushrut Deo

MSc Computer Science (2011)

Analyst Programmer, U. of Birmingham
Shaya Pourmirza

Shaya Pourmirza

MSc Computer Science (2012)

PhD Student, Eindhoven University
Amin Javan

Amin Javan

MSc Computer Science (2008)

Web Support Team Leader, ActivTrades

When I think of the most able students I have encountered in my teaching I mean those who have distinguished themselves not only by skill but by independence of thought.

— Albert Einstein

Courses taught

  • Software Design and Architecture (Graduate)

    Architectural styles; design patterns; architectural description languages; formal and semi-formal specification languages

  • Introduction to Software Design (U/Graduate)

    Methodologies, notations, terminology; techniques and heuristics for software design; design patterns and pattern languages; application frameworks

  • Research Methodology (Graduate & Doctorate)

    Scientific Method: hypotheses, scientific theories, controlled experiments; dissemination; science & pseudoscience; ethics

  • The C++ Programming Language (U/Graduate)

    Object-oriented programming in C++: encapsulation, information hiding, inheritance, polymorphism & dynamic binding; templates; STL—the standard library

  • Principles of Programming Languages (U/Graduate)

    Grammar & BNF; pragmatics: typing, scoping, binding; memory models; control flow abstractions; programming paradigms: object-oriented, functional, logic, and procedural programming

  • Software Engineering (U/Graduate)

    Effective software lifecycle models; requirements engineering; modelling notations: class, use-case, state, and data flow diagrams; design for software evolution; laws of software evolution; testing; quality metrics

  • Databases & Information Retrieval (U/Graduate)

    Entity-relations modelling, relational databases, SQL; Information Retrieval queries; elementary machine learning; data mining

  • Professional Development (U/Graduate)

    Project planning tools & techniques; history of computer science; ethics & professional bodies; business practices

  • Group Project (U/Graduate)

    Teamwork on software requirements and design projects; guiding 2yr students in planning & executing group projects