Programming & Program Design
I lead and teach this MSc module, connecting programming concepts with software design, implementation and testing, including practical work in Kotlin.
Concepts · code · evaluationI connect computer science and engineering principles with implementation, helping students develop the knowledge, practical skills and critical judgement needed for independent work.
I teach undergraduate and postgraduate computer science, supervise BSc and MSc projects, and contribute to project coordination and assessment.
I lead and teach this MSc module, connecting programming concepts with software design, implementation and testing, including practical work in Kotlin.
Concepts · code · evaluationCombining cloud-computing principles with practical investigation of infrastructure, virtualisation and deployed services.
Systems · infrastructure · practiceI lead this BSc module, supporting project planning, literature-informed software development, implementation and evaluation.
Research · development · reflectionMy wider responsibilities include BSc/MSc project supervision and the coordination of final-year software engineering projects.
My aim is to help students move from following an example to making and explaining their own decisions.
I combine clear explanations with programming tasks, interactive computing tools and opportunities to put concepts into practice.
Examples from software engineering, systems and scientific computing connect classroom principles with the design and analysis of working systems.
I use feedback to support development, encouraging students to explain their choices, assess their results and recognise the limitations of their work.
My supervision spans software engineering, high-performance computing, machine learning and cybersecurity. I support students in connecting a clear question with an appropriate method and evidence.
Define the problem and the scope of the investigation.
Use existing work to motivate and position the project.
Choose a method and justify the technical decisions.
Develop the software, model or experimental workflow.
Test the work and examine results and limitations.
Explain the contribution and reflect on what was learned.
Possible directions include scientific-software development, numerical modelling, simulation and visualisation connected to GTG Cell Studio, Pentarnion Studio and computational physiology. Potential topics and supervision arrangements are discussed individually.
My teaching history includes lecturing and teaching-assistant roles in computing and engineering. Earlier courses are listed separately from my current Hertfordshire responsibilities.
Lecturer · Department of Computer Science
Hatfield, United Kingdom
Teaching Assistant · School of Computing
Londonderry, United Kingdom
Lecturer · Electrical and Computer Engineering
Tehran, Iran
Lecturer · Computer Engineering
Buin Zahra, Iran
Lecturer · Computer Engineering
Tehran, Iran
Lecturer · Computer Engineering
Tehran, Iran
Courses taught as a lecturer, grouped by subject rather than assigned to a single institution.
Parallel algorithms; advanced algorithms; advanced programming in C, C++, C# and Java; Linux systems programming; Internet engineering; web design and development; team research and project management; Software Engineering Project.
Operating systems; cloud computing; parallel and distributed simulation; modelling and performance evaluation of computer systems; computer networks laboratory; operating systems laboratory.
Hardware/software co-design; embedded systems; computer architecture; logic circuits; circuit theory; advanced programming in C/C++; applications of computers in dentistry.
Computer hardware; concurrent and distributed systems; networked operating systems; Software Development I & II; object-oriented programming in C++; web and mobile application development; Internet technologies; cybersecurity; introduction to renewable energy.
Alongside degree teaching, I have delivered workshops in mathematical modelling, numerical methods and high-performance computation.
University of Hertfordshire · Autumn 2024
Ulster University · Spring 2023
Shahed University · Spring 2017
Sharif University of Technology · Spring 2015 and 2016
Implementing Parallel and Distributed Systems connects parallel programming and distributed-system concepts with worked examples and native C++ implementation.
Many of its chapters have been taught to undergraduate and postgraduate students. Companion source code supports practical exploration of concurrency, networking and high-performance computing.
I welcome conversations about student projects, research-informed teaching and training in scientific computing.