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% |