Skip to main content

Computer Science - Fall 2023 Junior

Course # COMP 3042E

6 Credits

Course Description

This course introduces mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and the design of algorithms used to solve these problems. The course emphasizes the relationship between algorithms and programming and introduces basic performance measures and analysis techniques for these problems. It also covers the time complexity and space complexity of different algorithms to find the best algorithm having less time and space complexity for different problems.

Course Learning Outcomes

Upon the completion of this course, students should be able to:

  • Identify the key characteristics of a problem.
  • Analyze the suitability of a specific algorithm design technique for a problem.
  • Apply different design techniques to design an algorithm.
  • Explain different time analysis techniques and notations of algorithms.
  • Analyze the time and space complexity of different algorithms.
  • Compare different algorithms to select the best solution for a given problem.

Course Assessments and Grading

Item 

Weight 

Attendance & Activities 

10% 

Assignment (5 assignments) 

15% 

Quizzes (10 quizzes) 

25% 

Midterm exam (1 midterm exam) 

20% 

Final exam (1 final exam) 

30% 

Course # COMP 4075E

6 Credits

Course Description

Digital Image Processing is a fundamental course that explores the techniques and algorithms used to manipulate, enhance, and analyze digital images. This course covers both theoretical foundations and practical applications of image processing in various fields, including computer vision, medical imaging, remote sensing, and multimedia. Students will learn about image representation, enhancement, restoration, compression, segmentation, feature extraction, and recognition.

Course Learning Outcomes

Upon the completion of this course, students should be able to:

  • Represent imaging in computer system.
  • Apply techniques like histogram equalization,contrast stretching, and filtering for image enhancement.
  • Implement restoration methods to recover degraded images from noise and blurring.
  • Employ thresholding, edge detection, and feature extraction for image segmentation and analysis.
  • Apply lossless and lossy compression techniques for efficient image storage and transmission.
  • Evaluate time and space complexity of algorithms and compare them to select optimal solutions.
  • Apply image processing to various fields like medical imaging and computer vision.
  • Develop problem-solving skills through hands-on projects and practical exercises.

Course Assessments and Grading

Item 

Weight 

Attendance & Activities 

10% 

Assignment (5 assignments) 

20% 

Quizzes (5 quizzes) 

20% 

Midterm exam (exam + project) 

20% 

Final exam (exam + project) 

30% 

Course # COMP 3071

6 Credits

Course Description

Artificial intelligence (AI) is a research field that studies how to realize intelligent human behaviors on a computer. The goal of AI is to make a computer that can learn, plan, and solve problems autonomously. In this course students will learn the basic methodologies for the design of artificial agents in complex environments. This course aims to expose students to the fundamental concepts and techniques that enable them to build smart applications including search strategies, agents, machine learning, planning, knowledge representation, reasoning, information retrieval and natural language processing.

Course Learning Outcomes

Upon the successful completion of this course, students will be able to:

  • Build an appropriate agent architecture, for a given problem to be solved by an intelligent agent.
  • Apply an uninformed/informed search algorithm to solve a given search/optimization problem.
  • Apply forward/backward planning algorithms to solve the planning problem.
  • Apply resolution/inference to a set of logic statements available in a knowledge base to answer a query.
  • Apply simple machine learning algorithms for classifying a set of data.

Course Assessments and Grading

Item

Weight

Mid-term exam paper 

20 %

Final exam paper 

30 %

Quizzes 

15 %

Homework Assignments 

20 %

Group Project 

15 %

Course # DMNS 3031

6 Credits

Course Description

This course is an introduction to statistics and probability. It is designed to equip students with understanding of foundations of statistics and probability and focuses on using modern statistical packages in examining relevant applications. The course is a prerequisite for advanced statistics.

Course Learning Outcomes

Upon the completion of this course, students should be able to:

  • Define fundamental concepts in statistics such as population, sample, types of data and variables.
  • Identify descriptive statistics from inferential statistics.
  • Define the role of descriptive statistics and inferential statistics in quantitative analyses.
  • Find measure of central tendency and measures of variability for given data sets.
  • Create and interpret appropriate visualizations for different types of data using a statistical package such as R, Python etc.
  • Apply counting principles, permutations, and combinations to solve problems involving counting and arrangements.
  • Define key terms in probability, such as random experiment and event.
  • Apply axioms and rules of probability.
  • Apply the principles of conditional probability to real world problem.
  • Describe types of random variables, probability distributions and their properties.
  • Calculate probabilities and expected values for various types of probability distributions such as Binomial, Poisson and Normal distributions.
  • Define jointly distribution random variables.
  • Explain the joint behavior of multiple random variables using distribution functions.
  • Describe the Law of Large Numbers and Central Limit Theorem and how they explain the behavior of sample means in large samples.
  • Define entropy, relative entropy and mutual information and their significance in information theory.
  • Calculate entropy to analyze the information content of different probability distributions.

Course Assessment and Grading

Item 

Weight 

Homework 

12% 

Quizzes 

15% 

Project 

15% 

Class Participation 

8% 

Midterm Exam 

20% 

Final Exam  

30% 

Course # COMP 3021

6 Credits

Course Description

This course focuses on the basic architecture of computer systems including fundamental concepts such as components of the processor, interfacing with memory and I/O devices, organization of peripherals, and machine-level operations. The course presents detailed deliberation on various system design considerations along with associated challenges commonly employed in computer architecture such as pipelining, branch prediction, caching, etc., This course provides the students with an understanding of the various levels of abstraction in computer architecture, with emphasis on instruction set level and register transfer level through practical examples using the language MIPS.

Learning Outcomes

Upon the completion of this course, students should be able to:

  • Describe the key components of the computer system along with their functionalities and limitations
  • Explain the internal working of processor underneath the software layer and how decisions made in hardware affect the software/programmer
  • Examine Instruction Set Architecture (ISA) designs and associated trade-offs
  • Analyze factors effecting CPU performance e.g., pipelining and instruction-level parallelism
  • Explain the I/O subsystems and memory modules of the computer
  • Evaluate design and optimization decisions across the boundaries of different layers and system components.

Course Assessments and Grading

Item

Weight

Quizzes 

25%

Midterm 

25%

Homeworks/Assignments/presentations 

20%

Final exam 

30%