Skip to main content

Computer Science - Junior

COURSE #: COMP 3042

Course Description

This course introduces mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, 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 in order to find the best algorithm having less time and space complexity for different problems.

Course Learning Outcomes

By the completion of the course, the 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 a 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 3041

Course Description

This course teaches the general theory, concepts, and techniques related to the theory of automata. Practical examples related to programming languages are emphasized. Students will have the opportunity to utilize theoretical aspects of automata theory by performing a medium-scale design project. Topics include Finite Automata, Transition Graphs, Nondeterminism, Finite Automata with Output, Context-Free Grammars, Regular Grammars, Chomsky Normal Form, Pushdown Automata, Context-Free Languages, Non-Context-Free Languages, Parsing, and Turing Machines.

Course Learning Outcomes

By the completion of the course, the students should be able to:

  • Use regular expressions, recursive definitions, finite automata, and transition graphs to understand the concept of formal languages.
  • Apply different mechanisms to convert regular expressions to finite automata
  • Use Different rules to construct context-free grammar for regular and non-regular languages.
  • Apply Chomsky’s normal technique to remove ambiguity from a context-free grammar
  • Construct a pushdown automaton and a Turing machine for a computer language.

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 3021

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.

Course Learning Outcomes

Upon the successful completion of this course, students will 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

Class participation and attendance

10%

Quiz activities

15%

Assignments

15%

Mid exam

30%

Final exam

30%

COURSE #: COMP 3071

Course Description

Artificial intelligence (AI) is a research field that studies how to realize the intelligent human behaviors on a computer. The ultimate 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

By completion of the course the students should be able to:

  • Build an appropriate agent architecture, for a given problem to be solved by an intelligent agent.
  • Understand 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 Assessment and Grading

Item

Weight (%)

Mid Term exam

20

Final exam

30

Quizzes

15

Homework Assignments

20

Group Project

15

COURSE #: DMNS 3031

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.

Learning Outcomes

At the end of this course, students should be able to:

  • Define data for different types and scales of measurements.
  • Identify descriptive statistics from inferential statistics
  • Define the role of descriptive statistics and inferential statistics in quantitative analyses.
  • Compute descriptive statistics for a dataset
  • Create appropriate visualizations for different types of data using a statistical package such as R, Excel etc.
  • Describe types of random variables, probability distributions and their properties.
  • Identify and apply appropriate statistical tests to make valid generalizations about a population based on sample data.
  • Interpret the results of statistical tests and outputs from a statistical programming package (R/Excel) to draw valid conclusions and communicate them orally and verbally.

Course Assessments and Grading

Item

Weight

Homework

And

Quizzes

 20%

Project

15%

Class Participation

5%

Midterm Exam

30%

Final exam

30%