Education & Research Interests

Education

B.Sc. in Computer Engineering

Sep 2018 -- Sep 2022

Isfahan University of Technology -- Isfahan, Iran

Department of Electrical and Computer Engineering

CGPA: 3.94/4

Research Interests

Machine Learning, Deep Learning

Computer Vision

Generative AI

Explainable AI

Reinforcement Learning

Online Courses

Reinforcement Learning

Stanford CS234

This class is about reinforcement learning, which is a powerful way for autonomous systems to learn how to make good decisions. It is relevant to many tasks, such as robotics, game playing, consumer modeling, and healthcare. Students will learn about the core challenges and approaches, including generalization and exploration.

Related Link

Machine Learning with Graphs

Stanford CS224W

The course focuses on analyzing massive graphs which are used to model social, technological, and biological systems. It covers computational, algorithmic, and modeling challenges and introduces students to machine learning techniques and data mining tools. The goal is to reveal insights on a variety of networks by studying the underlying graph structure and its features.

Related Link

Research

Research Projects

Ergonomic Assessment Using AI

Jan 2023 -- Ongoing

Isfahan University of Technology -- Isfahan, Iran

This research utilizes computer vision, machine learning, and data analysis to evaluate human posture, movement, and workplace conditions, providing valuable insights for risk analysis and injury prevention.

This research is under the supervision of Dr. Sayed Jalal Zahabi

Bachelor's Project --- Research Assistant

Sep 2021 -- Sep 2022

Isfahan University of Technology -- Isfahan, Iran

This research focused on designing a virtual agent capable of hallucination using Active Inference. I employed Unity to create the virtual environment and implemented the agent using PyTorch.

This research is under the supervision of Dr. Mohammad Hossein Manshaei and Dr. Sayed Jalal Zahabi

Related Link

Experience & Projects

Experience

Computational Intelligence Lab --- Intern

July 2022 -- Sep 2022

Isfahan University of Technology -- Isfahan, Iran

  • Facilitating infrastructure setup for students to effectively utilize AI-related packages (PyTorch, Tensorflow, Keras)
  • Conduct thorough research on a diverse range of Deep Learning projects, including Generative Adversarial Networks (GANs), Natural Language Processing (NLP), and various classifiers such as Support Vector Machines (SVM), K-Nearest Neighbors (KNN), Decision Trees, and Convolutional Neural Networks (CNN)
  • Designing assignments for prospective undergraduate students who want to join this lab

Freelance Developer

Aug 2020 -- Jan 2021

Dutycope -- Isfahan, Iran

  • Create a Restful API backend utilizing Node.js, Bind9, and Nginx
  • Create visually appealing HTML templates that align with the UI/UX design created in Adobe XD
  • Develop the frontend using Next.js for a seamless user experience
  • Develop a secure file system server utilizing Google Drive for enhanced data protection

Teaching Assistant

Jan 2020 -- Jun 2020

Isfahan University of Technology -- Isfahan, Iran

  • Assisted Dr. Mouzarani (lecturer) in delivering course material and fostering a positive learning environment in the Advanced Programming course for undergraduate students
  • Design engaging assignments promoting creativity, collaboration, and practicality
  • Conducted Q/A sessions to address students' queries
  • Provided technical support by debugging students' codes
  • Developed comprehensive tutorials to further aid students in grasping complex programming concepts

Recent Projects

Pixel Hackenbush

2024

A simple yet engaging implementation of the Hackenbush game, built using the Flutter framework and the Flame game engine.

Related Link

Additive Pattern Database with ANN

2023

LibTorch (C++ Distributions of PyTorch) implementation of Optimal Search with Neural Networks: Challenges and Approaches paper.

Related Link

Deep Active Inference of rubber-hand Illusion

2022

Python implementation of rubber-hand illusion using Deep Active Inference to find out how an agent can have illusion.

Related Link

Deep Active Inference of Mountain Car Problem

2022

Python implementation of Mountain Car Problem using Deep Active Inference algorithm and Unity as an environment to learn about active inference algorithm.

Related Link

Computer Vision Project

2022

Content-Aware Image Resizing using Seam carving, Scaling and Auto Crop.

DSATUR Algorithm

2022

Java implementation for DSATUR graph coloring algorithm.

Related Link

Reinforcement Learning with Unity

2021

Implemented different agents in Unity to get to know about Reinforcement Learning.

Fundraising Website on Ethereum Network

2020

I created a fundraising website like Kickstarter based on Ethereum Block Chain using Web3 and Solidity language.

Advanced Programming Project

2019

As our final project in the Advanced Programming course, we implemented a graphical application for real estate managers to manage their rental and sales lists. Users could also buy or rent houses with this application.

Related Link

About Me

Skills

Soft Skills

Hard Working

Teamwork

Problem Solving

Hard skills

Deep learning & AI

Machine learning

C/C++

Python

Matlab

C#

Java

JS

Rust

Unity

Unreal Engine

Flutter

Awards

Ranked 2nd at local ACM programming contest

Feb 2019, Isfahan University of Technology

Ranked among top 1% at iranian university entrance exam

Aug 2018

Received national undergraduate full scholarship

2018 – 2022

Obtaining a provincial rank in Kharazmi competitions

2013, Isfahan, Iran

Tests

IELTS

18 March 2023

Overall 7.5 (L8 R8 W6.5 S7)

Languages

English

Fluent

Persian

Native

Selected Courses

Fundamentals of Computer Vision

4/4

Artificial Intelligence

4/4

Fundamentals of Computational Intelligence

4/4

Fundamentals of Machine Learning

4/4

Advanced Programming and Lab

4/4

References

Isfahan University of Technology Isfahan, Iran manshaei[at]cc.iut.ac.ir

Dr. Mohammad Hossein Manshaei

Dr. Mohammad Hossein Manshaei

Associate Professor at Electrical and Computer Engineering Department

Isfahan University of Technology Isfahan, Iran safayani[at]iut.ac.ir

Dr. Mehran Safayani

Dr. Mehran Safayani

Associate Professor at Electrical and Computer Engineering Department

Isfahan University of Technology Isfahan, Iran zahabi[at]iut.ac.ir

Dr. Sayed Jalal Zahabi

Dr. Sayed Jalal Zahabi

Assistant Professor at Electrical and Computer Engineering Department

Course Description

Bachelor of Science Courses

AI Related Courses

Fundamentals of Computer Programming and Lab

Code: 1730115 -- Credits: 4

Introduction to Computers, History of Computers, Introduction to computer parts and environments (hardware. Software). Numerical Systems (2's Complement, IEEE Floating point), Constants, Variables, Input and output consoles, Introduction to algorithms implementation, Introduction to structural languages (e.g. C), arithmetic and logical operators. Bitwise operators, flow control and loops (if, while, do...), Casting, Search and sort algorithms, Overloading functions, introduction to Debugging, pointers, File Input and output, Introduction to Class and Data Abstraction.

Fundamentals of Computer Programming Workshop

Code: 1730151 -- Credits: 0

In appropriation with subjects of the relevant course.

Discrete Structures

Code: 1730217 -- Credits: 3

Logic and Reasoning, Propositional, Predicate, and Fuzzy Logic, Methods of Proof, Set Theory, Functions, Combinatorial Analysis: Basics of Counting The Pigeonhole Principle, Permutations and Combinations, Recurrence Relations, Generating Functions and Counting, Relations and Ordered Sets, Relations and Their Properties, Representing Relations, Closures of Relations, Equivalence Relations, Partial Ordering ,Partially-ordered sets, Totally-ordered sets, Hasse diagrams, and Lattices, Graphs, Graph Terminology, Representing Graphs and Graph Isomorphism, Connectivity and Euler and Hamiltonian Paths ,Shortest Path Problems, Planar Graphs, Trees , Introduction to Trees and Their Applications, Tree Traversal, Spanning Trees, Fundamentals of Computing , Languages and Grammars, Finite-State Machines, Turing Machines and Computability, Miscellaneous and Review.

Co-requisite: Fundamentals of Computer Programming and Lab,

Advanced Programming and Lab

Code: 1734102 -- Credits: 4

This includes a deep dive into C++ programming, an introduction to UI design using QT, and mobile programming for both Android and iOS. It also covers supplementary aspects of C programming, such as memory management, and a thorough understanding of C++ codes. The relationship between coding and the operating system, file management, and IO streams is explored, as well as the implementation of basic data structures like linked lists.
Generic programming is discussed, along with the implementation of inheritance and its associated challenges in C++. Other topics include operator overloading, GUI design using QT, the essentials of multithreading, exception handling, and the principles of object-oriented programming. The comparison between C++ and other languages like C\#, Java, etc. is also addressed, as well as the process of debugging and testing programs.
The course also touches on function calling conventions, dynamic memory coding, an introduction to functional programming, and the development of dynamic-link-libraries. The OpenCV library is used as an example to show how to load an image and perform matrix manipulation among other things.

Prerequisite: Fundamentals of Computer Programming and Lab,

Data Structures

Code: 1734212 -- Credits: 3

The analysis involves evaluating the efficiency of the algorithm and the use of recursion. Data abstractions are examined, along with basic data structures like arrays and records. The representation methods of various data structures such as stacks, queues, linked lists, trees, and graphs are also considered. A variety of sorting algorithms are explored, including bubble sort, selection sort, linear insertion sort, tree sort, heap sort, quick sort, and merge sort. Additionally, different searching algorithms are studied, such as binary search, binary search trees (BST), AVL trees, B-trees, and digital search.

Prerequisite: Advanced Programming and Lab, Discrete Structures,

Theory of Automata and Formal Languages

Code: 1734325 -- Credits: 3

Finite state automata and regular expressions. Pushdown Automata and context free grammars, linear bounded Automata and context sensitive grammars, Turing machines and unrestricted grammars, relations between machines and grammars.

Prerequisite: Data Structures,

Algorithm Design

Code: 1734425 -- Credits: 3

This course in intended for undergraduate students of Software Engineering and it provides basic concepts and methods for designing and analyzing algorithms. Students are supposed to have already passed Discrete Structures and Data Structures and Algorithms courses. In particular, after a quick review of growth of functions and asymptotic nations, four general paradigms of Divide and Conquer, Dynamic Programming, Greedy, Backtracking, and Branch and Bound are introduced using basic examples including basic graph problems.

Prerequisite: Data Structures,

Artificial Intelligence

Code: 1734420 -- Credits: 3

In this course, students will explore the field of Artificial Intelligence and learn how to embed intelligent behavior in machines. The course will cover fundamental aspects of artificial intelligence in a broad and general fashion, with a focus on problem-solving, knowledge and reasoning using first-order logic, planning, uncertain and probabilistic reasoning, learning, and robotics.
By studying this course, students will gain a solid understanding of the fundamental principles and techniques of artificial intelligence. They will learn how to apply these techniques to solve complex problems and develop intelligent systems. The course will provide a strong foundation for further studies or careers in the field of artificial intelligence.

Prerequisite: Data Structures, Algorithm Design,

Science Communication Skills

Code: 1740312 -- Credits: 2

This course focuses on developing the necessary skills for effective oral and written presentations in the field of science. It covers a range of topics related to communication and publication in scientific research.
In the first part of the course, students will study the principles of oral and written presentations. They will learn about the fundamentals of effective communication in scientific settings and techniques for delivering clear and engaging presentations. Students will also develop skills in structuring and organizing scientific information to effectively convey their message.
The course will then delve into the basic concepts of authenticity and plagiarism. Students will understand the importance of maintaining authenticity in scientific research and the ethical guidelines for avoiding plagiarism. They will learn best practices for citing and referencing sources and the consequences of plagiarism in the scientific community.
Next, the course will cover general concepts of technical publication and its structure. Students will become familiar with the components of a technical publication, including the title, abstract, keywords, introduction, main body, conclusions, references, and appendices. They will also explore the structure of different types of reports, such as lab reports, term papers, and thesis, and develop skills in effectively structuring and organizing scientific reports.
The final part of the course focuses on oral presentations. Students will learn the process of preparing and delivering effective oral presentations. They will understand the importance of visual aids, sets, and tools in enhancing presentations. Through practical exercises, students will develop techniques for engaging and captivating an audience during oral presentations.
By the end of this course, students will have gained the necessary skills to communicate scientific information effectively through both oral and written means. They will have a solid understanding of the principles of scientific communication, including the importance of authenticity and avoiding plagiarism. Students will also have the ability to structure and organize scientific reports and deliver engaging oral presentations.

Prerequisite: English Language for Computer Engineering,

Fundamentals of Machine Learning

Code: 1730435 -- Credits: 3

Machine learning is a subfield of artificial intelligence that deals with the development of algorithms and models that enable computers to learn from data and make predictions or decisions without being explicitly programmed. This comprehensive course provides an introduction to the fundamental principles, techniques, and applications of machine learning.
Throughout the course, we will cover the main approaches in machine learning and discuss the basic principles and techniques used in this field. We will explore topics such as supervised learning (including generative and discriminative learning, parametric and non-parametric learning, and neural networks), unsupervised learning (including clustering, dimensionality reduction, and kernel methods), and learning theory (including bias/variance tradeoffs and practical advice).
By the end of the course, students will have a solid understanding of modern machine learning and will be equipped with the necessary skills to apply machine learning techniques to real-world challenges.

Prerequisite: Advanced Programming and Lab, Engineering Statistics and Probability,

Fundamentals of Computational Intelligence

Code: 1730403 -- Credits: 3

The objective of this course is to provide students with a deep understanding of computational intelligence tools and their applications in engineering. Through a comprehensive curriculum, students will learn about evolutionary algorithms, fuzzy methods, and neural networks, which are widely used in industries such as manufacturing, robotics, automation, and data analysis. By mastering these tools, students will gain the ability to solve complex problems, optimize systems, make data-driven decisions, and improve overall efficiency in various engineering domains.

Prerequisite: Algorithm Design,

Fundamentals of Computer Vision

Code: 1730460 -- Credits: 3

This course provides a comprehensive introduction to computer vision and image analysis, with a specific focus on two-dimensional computer vision. It covers the fundamental concepts and techniques used in computer vision and explores its applications in various industries. Through practical projects, students will gain hands-on experience in solving real-world problems in the field of computer vision. By the end of the course, students will have a solid understanding of computer vision principles and the ability to apply them to industrial applications.

Prerequisite: Algorithm Design,

Main Courses

Computer Workshop

Code: 1730101 -- Credits: 1

This course introduces students to the basics of computer usage. It begins by familiarizing students with various operating systems. After that, students learn how to type in both Farsi and English. The course then progresses to teach students how to use a word processor, spreadsheet software, presentation software, and databases. Finally, the course concludes by teaching students how to keep their computers safe and the correct ergonomics for computer use.

Introduction to Electrical and Computer Engineering

Code: 1740101 -- Credits: 1

This undergraduate course provides a broad review of important challenges in computer science and computer engineering. The course is given to the computer and IT engineering students in the first semester. Students would be able to understand differences between different fields of computer sciences and engineering. They learn the main topics of computer and IT engineering courses, which would be delivered at the IUT. They also learn about department and faculties. There are many topics, including but not limited to Software Engineering, Hardware Engineering, Networking, Algorithm, Machine Learning, AI, Database, and Networking.

Principles of Electrical Safety Workshop

Code: 1710204 -- Credits: 0

Prevention of electric shock (health and work safety), conductors, introduction to earth connections, introduction to types of cables and air wires and their links, introduction to voltage breakers, introduction to power connectors, introduction to capacitors and reactors, application of 1-pole and 2- pole keys, change and plug, news transmission systems, relays, controlling and connectors circuits, Introduction to conductors, domestic and industrial wiring, installing high and low pressure boards, introduction to different transformers and their applications (power trans, voltage trans current, radio trans).

Digital Systems Design I

Code: 1732203 -- Credits: 3

This course provides the student with a foundation in the fundamentals of digital logic design and computer logic circuits. Both combinational and sequential logic circuits are covered in this course. The emphasis is on the use of Boolean algebra and basic logic gates to build cost effective complex logic circuits. Topics include: Number systems, Binary arithmetic, Codes, Logic gates, Boolean algebra and simplifications, Half adders, Full adders, Decoders, Encoders, Multiplexers, Latches, Flip-Flops, Counters, Shift Registers, Memory circuits, and ALU (Arithmetic and Logic Unit).

Fundamentals of Electrical and Electronic Circuits

Code: 1732207 -- Credits: 3

Circuit abstraction, Ideal and practical two-terminal elements, Kirchhoff's laws, analysis of resistive networks, network and superposition theorems, analysis of nonlinear circuits, digital abstraction, BJT switch, MOSFET switch, energy storage elements, analysis of RC, RL circuits, state and state variables, digital memory, operational amplifier and applications, 555 timer and applications.

Co-requisite: Physics II, Differential Equations,

Engineering Mathematics

Code: 1914252 -- Credits: 3

This course covers a wide range of topics in mathematics, including complex differentiability, Cauchy-Riemann differential equations, contour integration, residue calculus, harmonic functions, matrix factorizations, and geometric properties of complex mappings. It also includes elementary operations with complex numbers, derivatives, integrals, Cauchy's Theorem and its consequences such as the integral formula, power series, residue theorem, and applications to real integrals and series.

Prerequisite: General Mathematics II, Differential Equations,

Digital Systems Design Lab I

Code: 1732204 -- Credits: 1

This course covers various topics including logic gates, familiarization with several logic circuits, determination of parameters of digital IC's, several combinational circuits (decoder, multiplexer, parity generators, and checkers), displays, study of types of flip flops, asynchronous counters, synchronous counters, familiarization with several IC counters, and shift registers.

Co-requisite: Digital Systems Design I,

Computer Architecture and Organization

Code: 1732208 -- Credits: 3

Principles of an assembly language programming, introduction to computer architecture, internal representation of data and instruction, memory organization, microprogramming multi-level machines, Control memory, common bus organization, stack organization and RISC and CICS structures, pipeline and basics of parallel machines.

Prerequisite: Digital Systems Design I,

Computer Networks

Code: 1740320 -- Credits: 3

This undergraduate course provides an overview on networking and Internet. The course covers the following topics: Introduction (Protocol, Access Net, Physical Media, Packet/Circuit Switching, Internet Structure, Performance: Loss, Delay, Throughput, Introduction to Network Security, Protocol Layers), Application layer (Principles of Network Applications, Web and HTTP, FTP, SMTP, POP3, DNS, TCP and UDP Sockets), Transport Layer (Transport-layer services, Multiplexing and demultiplexing, Connectionless transport: UDP, Principles of reliable data transfer (Rdt protocol, Stop and Wait, Go-back-N, Selective repeat), Connection-oriented transport: TCP (Segment structure, Reliable data transfer, Flow control), Connection management (Principles of congestion control, TCP Congestion Control), Network Layer (Virtual circuit and datagram networks, Inside a router, Internet Protocol, DHCP, NAT, ICMP, IPv6 Addressing), Link layer and LANs (Framing, Flow control, Half-duplex and full-duplex, Error detection and correction, Multiple access protocols).

Co-requisite: Computer Architecture and Organization,

English Language for Computer Engineering

Code: 2510318 -- Credits: 2

This subject aims at raising students' specific language ability in reading and writing academic texts of their own major disciplines. The subject will use reading texts from chapters of books or journal articles recommended by teachers of different majors for reading comprehension. These texts will also be used for analysis to enable students to develop an awareness of the genre in that discipline.

Prerequisite: General English (Technology and Engineering),

Hardware Description Languages

Code: 1718449 -- Credits: 3

Introduction to Verilog HDL, gate-level modeling, data flow modeling, behavioral modeling, timing simulation, switch-level modeling, strength-level modeling.

Co-requisite: Computer Architecture and Organization,

Microprocessors

Code: 1732312 -- Credits: 3

Internal organization of computers, memory organization, memory types and address decoding, CPU architecture, microcontroller versus general purpose microprocessor, microcontroller and embedded processors, history and features of AVR microcontroller, AVR architecture and assembly language programming, AVR port programming, AVR advanced assembly language programming, AVR programming in C, AVR hardware connections, timers programming, and interrupt programming, AVR Serial port programming, LCD and keyboard interfacing, ADC , DAC, and Sensor interfacing, relay and stepper motor Interfacing, PWM programming and DC motor control.

Prerequisite: Computer Architecture and Organization,

Database I

Code: 1734303 -- Credits: 3

This course provides an introduction to the fundamental concepts used in data modeling and database implementation. Topics covered include the data modeling process, basic relational concepts, normalization, relational algebra, SQL, and guidelines for mapping a data model into a relational database. Students will have the opportunity to model and implement a multimedia and/or text-only problem using a commercially available DBMS such as Microsoft SQL Server or Oracle.

Prerequisite: Data Structures,

Operating System Lab

Code: 1734304 -- Credits: 1

This course provides an introduction to the fundamental concepts of operating systems, focusing on their design, implementation, and usage. The topics covered include process management, threads, CPU scheduling, process synchronization, deadlock management, memory management, file systems, and input/output systems. Further, we delve into the intricacies of main memory management, virtual memory, I/O and device drivers, secondary storage management, and the critical concepts of sections and deadlocks. This comprehensive course ensures a solid understanding of both the theoretical principles and practical aspects of operating systems.

Co-requisite: Operating Systems I,

Operating Systems I

Code: 1734320 -- Credits: 3

This course covers an overview of operating systems, including their functionalities and characteristics. It also explores hardware concepts related to operating systems such as CPU states, I/O channels, memory hierarchy, and microprogramming. The course discusses the concept of a process, operations on processes, process states, concurrent processes, process control blocks, and process context. Additionally, it focuses on UNIX process control and management, covering topics like process control blocks (PCBs), signals, forks, and pipes. The course also delves into interrupt processing, operating system organization, OS kernel First Level Interrupt Handlers (FLIH), and dispatchers. It explores job and processor scheduling, scheduling algorithms, and process hierarchies. Furthermore, it addresses the problems of concurrent processes, including critical sections, mutual exclusion, synchronization, and deadlock. The course examines mutual exclusion and process cooperation, as well as producer and consumer processes. It covers semaphores, their definition, initialization, wait, and signal operations. The course discusses the use of semaphores to implement mutex, process synchronization, and other functionalities, along with their implementation. It also explores critical regions, Conditional Critical Regions, monitors, and Ada tasks. Inter-process Communication (IPC), Message Passing, Direct and Indirect communication are discussed. The course covers deadlock prevention, detection, avoidance, and the banker's algorithm. It also covers memory organization and management, storage allocation, virtual memory concepts, paging and segmentation, address mapping, virtual storage management, and page replacement strategies.

Prerequisite: Data Structures, Computer Architecture and Organization,

Database Lab

Code: 1734452 -- Credits: 1

This lab covers a wide range of practical sections on installing a DBMS like MS SQL Server, configuration of its engine and enterprise management environment, the SQL language, inner and outer join operations, aggregate functions, subqueries and common type expressions, handling null values, triggers, stored procedures and user defined functions and indexing method.

Co-requisite: Database I,

Computer Networks II

Code: 1736310 -- Credits: 3

This advance networking course covers a comprehensive range of topics, including Internet network architecture, transport layer concepts such as congestion control, fairness, and scheduling, routing algorithms like link state, DV, and hierarchical, routing protocols in the internet such as RIP, OSPF, and BGP, multicast routing, link layer protocol covering framing, error detection and correction, multiple access, addressing, VLAN, PPP protocol, and link layer switch, ATM network, MPLS, queuing theory, and the physical layer.

Prerequisite: Computer Networks,

Computer Networks Lab

Code: 1740404 -- Credits: 1

- Network setting in windows and Linux
- Virtual machine
- Linux firewall
- Analysis some appellation protocols (WEB, DNS, ICMP)
- Switching basics [Basic configuring of switches]
- VLAN Configuration
- Routing Basics [Basic configuring of routers]
- Static routing in CISCO router
- RIP Routing
- OSPF routing
- VLAN Configuration
- Case study (Design a network)

Co-requisite: Computer Networks,

Signals and Systems Analysis

Code: 1718204 -- Credits: 3

Primary definitions of systems and signal, various kinds of systems, introduction to modeling of various physical systems, analysis of linear and time independent (continuous and discrete) systems, impulse response, convolution integral, Fourier analysis, energy density, spectrum and power sampling theorem, system analysis by Laplace transform, signal flow graphs, system analysis in state space (continuous and discrete), Z transform, discrete systems analysis by the Z transform.

Co-requisite: Engineering Mathematics,

Software Engineering Lab I

Code: 1734307 -- Credits: 1

This lab is designed to accompany the Software Engineering I course and is intended for undergraduate students majoring in Software Engineering. It provides hands-on practice in requirements engineering and object-oriented design using UML diagrams such as use-case, sequence, and class diagrams. Students will work on a real project and gain familiarity with modern tools like Visual Paradigm.

Co-requisite: Software Engineering I,

Software Engineering I

Code: 1734312 -- Credits: 3

Process models, agile processes, system engineering, requirement engineering, analysis engineering, design engineering, architectural design, computer level design, user interface design, software testing, quality management, software engineering with emphasis on UML modeling and design patterns.

Co-requisite: Database I,

Compiler

Code: 1734333 -- Credits: 3

Lexical analysis, regular expressions and finite automata, syntax analysis, context free grammars, (SLR, LALR, CLR), semantics analysis and intermediate code generation (syntax directed translation method), code generation and runtime storage management.

Prerequisite: Theory of Automata and Formal Languages,

Fundamentals of Secure Computing

Code: 1730400 -- Credits: 3

- Introduction: history of cryptography and introduction to security architecture, basic information security concepts and protection mechanisms, Confidentiality, Integrity and Authenticity (CIA).
- Mathematics: basic material on information theory, Shannon criteria, Symmetric-key encryption, one-time- pad, complexity theory, number theory and background on functions, abstract algebra, and finite fields.
- Block Ciphers: DES (Data Encryption Standard), AES (Advanced Encryption Standard), encryption modes, linear and differential attacks on block ciphers.
- Hash functions: Basic constructions, Unkeyed hash functions (MDCs) Keyed hash functions (MACs), Data integrity and message authentication.
- Public-key cryptography: RSA, ElGamal.
- Digital signatures: security of public-key cryptography, RSA encryption and digital signature, ElGamal digital signature, DSS (Digital Signature Standard).
- Key management: Protocols and mechanisms, key establishment and key management, and certification.

Co-requisite: Computer Networks,

Microprocessors Lab

Code: 1732401 -- Credits: 1

Introducing to AVR microcontrollers, Programming of I/O ports, LCD, Keyboard, Timers, ADC/DAC, PWM, and RS232. Familiarizing with the use of relay, DC motors, and Dot matrix. And also an interesting tutorial on codevision programming.

Prerequisite: Digital Systems Design Lab I, Microprocessors,

Fundamentals of Internet of Things

Code: 1730430 -- Credits: 3

The Fundamentals of Internet of Things (IoT) course is designed to provide non-information security professionals with a comprehensive understanding of IoT devices and their role in technological transformation. With the increasing number of connected devices and the need for organizations to optimize their use of IoT technology, this course aims to equip participants with the knowledge and skills to identify potential use cases and integrate IoT products into their digital transformation plans.
The course begins by introducing participants to the basics of how IoT products work and their significance in the global technology landscape. Participants will explore a range of IoT use cases and examine their potential applications within their own organizations. Through interactive discussions and practical exercises, participants will learn about the fundamentals of IoT, including the key components of an IoT system and the communication protocols used.

Prerequisite: Microprocessors, Computer Networks,

Software Engineering II

Code: 1734449 -- Credits: 3

Advanced software engineering techniques using state-of-the-art tools and techniques and software reuse, component-based design, distributed software design, service-oriented architectures and aspect-oriented software development are discussed. Students perform practical team projects focusing on software design skills. Software project management, project scheduling and risk management based on holistic methods like the Rational Unified Process is also presented to enhance their software project management skills.

Prerequisite: Database I, Software Engineering I,

Database II

Code: 1734308 -- Credits: 3

Advanced concepts used in database design and implementation. Transaction processing, XML data exchange support by DBMS, spatial databases and location-dependent queries, as well as an overview of data analysis techniques are among the topics discussed in this course. Student will conduct practical projects in applying the concepts on MS-SQL server, Oracle, PostgreSQL, and MySQL in Database II.

Prerequisite: Database I,

Software Testing

Code: 1734400 -- Credits: 3

This undergraduate course is designed to provide a comprehensive understanding of systematic software testing methodologies. It focuses on generating test data from various software models, with a special emphasis on addressing the challenges posed by scientific software testing. The course also introduces the necessary tools and techniques for implementing these methodologies effectively. Students will learn about traditional methods like random test case generation, as well as innovative techniques like metamorphic testing. Furthermore, the course will delve into unit, system, integration, acceptance, and regression testing, while highlighting the importance of test coverage information during the testing process.

Basic Courses

General Mathematics I

Code: 1914106 -- Credits: 3

Study of single variable calculus, numerical sequences, limits, continuity differentiation, extreme function values, the definite integrals, applications of the definite integrals, Inverse functions, logarithmic and exponential functions, inverse trigonometric and hyperbolic functions, techniques of integration, indeterminate forms, improper integrals, Taylor's formulae, infinite series.

Physics I

Code: 2010115 -- Credits: 3

Measurement, Motion in two and three dimensions, forces and Newton's laws and its application, momentum, systems of particles, rotational kinetics, rotational dynamics, angular momentum, work and kinetic energy, potential energy, conservation of energy, gravitation, temperature, molecular properties of gasses, first law of thermodynamics, entropy and second law of thermodynamics.

General Mathematics II

Code: 1914107 -- Credits: 3

Advanced principles of mathematics and instructions for solving equations: Parametric equations and polar coordinates, vectors in 2- and 3-dimensional Euclidean spaces, vector calculus, matrix arithmetic and determinants, linear transformations, basic linear algebra, differential equations, multi-variable functions, partial derivatives, multiple integrals. Theorems of Green, Gauss (Divergence), and Stokes, cylindrical and spherical coordinates.

Prerequisite: General Mathematics I,

Differential Equations

Code: 1914251 -- Credits: 3

Nature of differential equations and their solution, family of graphs and vertical routes, physical patterns, separable equation, first order linear differential equation, homogeneous equation, 2nd order linear equation, homogenous equation with fixed constants, method of indefinite constants, method of changing parameters, application of 2nd order equations in physics and mechanics, solution of differential equation with series, Bessel and Gamma functions, Legendre polynomial, an introduction to differential equations set, Laplace transform and its application in solving differential equations.

Co-requisite: General Mathematics II,

Prerequisite: General Mathematics I,

Physics II

Code: 2010125 -- Credits: 3

Electric charge and Coulomb's law, the electric field, Gauss' law, electric potential energy and potential, the electric properties of materials, capacitance and capacitors, DC circuits, the magnetic field and magnetic field of a current, Faraday's law in induction, magnetic properties of materials, inductance, AC circuits, Ampere's law.

Prerequisite: Physics I,

Physics of Electricity Lab

Code: 2010126 -- Credits: 1

Testing Electric Circuits subjects practically.

Co-requisite: Physics II,

Engineering Statistics and Probability

Code: 1912291 -- Credits: 3

An introduction to probability theory and statistics, with an emphasis on solving problems in computer science and engineering. Probability and statistics is an important foundation for computer science fields such as machine learning, artificial intelligence, computer graphics, randomized algorithms, image processing, and scientific simulations. Topics in probability include discrete and continuous random variables, probability distributions, sums and functions of random variables, the law of large numbers, and the central limit theorem. Topics in statistics include sample mean and variance, estimating distributions, correlation, regression, and hypothesis testing.

Prerequisite: General Mathematics II,

Project

Project I

Code: 1740350 -- Credits: 3

Students must submit an essay in the final year of their undergraduate studies.

Co-requisite: Science Communication Skills,

Prerequisite: Completion of at least 100 academic credits,

Internship

Internship

Code: 1740357 -- Credits: 1

Participatory computer experience working for company or not for profit organization in the area or inside research in university. The choice of organization and type of work is to be determined by the student but must be approved in advance by a Computer Engineering faculty member who will coordinate the student's internship.

Prerequisite: Completion of at least 80 academic credits,