CS5310 Algorithms 3 credit hours 2 hours lecture and 2 hours recitation every week



Similar documents
Model 2.4 Faculty member + student

Division of Mathematical Sciences

PARALLEL PROGRAMMING

Computer Architecture Syllabus of Qualifying Examination

2. (a) Explain the strassen s matrix multiplication. (b) Write deletion algorithm, of Binary search tree. [8+8]

COMPUTER SCIENCE, BACHELOR OF SCIENCE (B.S.)

CS 301 Course Information

Computer Science/Mathematics Curriculum Pepperdine University

COMPUTER SCIENCE. 1. Computer Fundamentals and Applications

COMPUTER SCIENCE. FACULTY: Jennifer Bowen, Chair Denise Byrnes, Associate Chair Sofia Visa

Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C

Curriculum for the Bachelor Degree in Computer Science (CS)

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) Total 92.

Course Manual Automata & Complexity 2015

Computer Science GRADUATE HANDBOOK

List of courses MEngg (Computer Systems)

MASTER OF SCIENCE IN COMPUTER SCIENCE (MSCS) Department of Computer Science and Information Technology (CSIT) University of the District of Columbia

Computer Science. Requirements for the Major (updated 11/13/03)

Assessment Plan for CS and CIS Degree Programs Computer Science Dept. Texas A&M University - Commerce

Computer Science Course Descriptions

SRM UNIVERSITY FACULTY OF ENGINEERING & TECHNOLOGY SCHOOL OF COMPUTING DEPARTMENT OF SOFTWARE ENGINEERING COURSE PLAN

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011

Assessment for Master s Degree Program Fall Spring 2011 Computer Science Dept. Texas A&M University - Commerce

To My Parents -Laxmi and Modaiah. To My Family Members. To My Friends. To IIT Bombay. To All Hard Workers

Philadelphia University Faculty of Information Technology Department of Computer Science First Semester, 2007/2008.

Computer Science MS Course Descriptions

Computer Science Courses-1

Department of Computer Science

Computer Algorithms. NP-Complete Problems. CISC 4080 Yanjun Li

Master of Arts in Mathematics

ML for the Working Programmer

Degrees Major in Computer Science Minor in Computer Science Major in Software Engineering

Computer and Information Sciences

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

How To Get A Computer Science Degree In Thai Ireland

Computer Science. Master of Science

STUDY PROGRAM: INFORMATION SYSTEM

M.S. Computer Science Program

How To Get A Computer Science Degree At Appalachian State

Doctor of Philosophy in Computer Science

How To Get A Computer Science Degree

CS & Applied Mathematics Dual Degree Curriculum Content

Course Descriptions - Computer Science and Software Engineering

02-201: Programming for Scientists

Master of Science in Computer Science

COLLEGE OF INFORMATION TECHNOLOGY

Professional Organization Checklist for the Computer Science Curriculum Updates. Association of Computing Machinery Computing Curricula 2008

Exam study sheet for CS2711. List of topics

CS Master Level Courses and Areas COURSE DESCRIPTIONS. CSCI 521 Real-Time Systems. CSCI 522 High Performance Computing

COMPUTER SCIENCE GRADUATE INFORMATION PACKET UNM SCHOOL OF ENGINEERING

Computer Science Theory. From the course description:

How To Learn To Manage A Computer System

Programming Languages

Computer Science/Software Engineering

Incorporating Multicore Programming in Bachelor of Science in Computer Engineering Program

Describe the process of parallelization as it relates to problem solving.

Department Overview. Preparation for Graduate School. Dual Degree BS and MSCIS Track. COMPUTER SCIENCE Computer Science

Complexity Classes P and NP

CS 2302 Data Structures Spring 2015

Department of Computer Science

7CS-A(CD_lab) Actual date of covering the. Reason for not covering the topic in due time. Month in which the topic will be covered

Introduction to Automata Theory. Reading: Chapter 1

CS491 Great Principles of Information Technology

CS 341: Foundations of Computer Science II elearning Section Syllabus, Spring 2015

Computer Science. Courses. Computer Science 1

Pushdown automata. Informatics 2A: Lecture 9. Alex Simpson. 3 October, School of Informatics University of Edinburgh als@inf.ed.ac.

The Halting Problem is Undecidable

Overview of E0222: Automata and Computability

Master Degree Program in Computer Science (CS)

Using Web-based Tools to Enhance Student Learning and Practice in Data Structures Course

AP Computer Science AB Syllabus 1

Turing Machines: An Introduction

Sample Syllabus (C++) CSCI 1301 Introduction to Programming Principles

Algorithms and data structures

Compiler I: Syntax Analysis Human Thought

Software Engineering and Service Design: courses in ITMO University

3515ICT Theory of Computation Turing Machines

MEng, BSc Computer Science with Artificial Intelligence

Compiler Construction

Course Curriculum for Master Degree in Computer Engineering

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer

Learning Objectives for Computer Science Courses Spring 2010

CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 313]

Teaching Formal Methods for Computational Linguistics at Uppsala University

Transcription:

CS5310 Algorithms 3 credit hours 2 hours lecture and 2 hours recitation every week This course is a continuation of the study of data structures and algorithms, emphasizing methods useful in practice. It provides a theoretical foundation in designing algorithms as well as their efficient implementations. The focus is on the advanced analysis of algorithms and on how the selections of different data structures affect the performance of algorithms. Topics covered include: sorting; search trees, heaps, and hashing; divideand-conquer; dynamic programming; backtracking; branch-and-bound; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; and parallel computing. Learning Outcomes Reinforce analytic development and problem solving abilities, and develop a foundation in computer science. Show progress with regard to understanding the analysis and performance of algorithms (for further use, e.g., in graduate level courses), including knowledge and use of terminology and how the theory connects with real-world applications, possibly in different and new areas. Apply the concepts covered in the course to written and practical problems, e.g., by combining problem solving with computer programming and the use of software tools as part of assignments. Students who earn a C or better in this course should have knowledge of o Sequential algorithms pertaining to the greedy, divide-and-conquer, dynamic programming, backtracking and branch-and-bound paradigms; o Parallel algorithms pertaining to SIMD, MIMD, shared memory and message passing systems; o Introductory databases and data management applications; o Analyzing iterative and recursive sequential and parallel algorithms; o Efficient data structures such as AVL trees, 2-3 trees, min-max heaps, B-trees. Topics/modules with Bloom classifications are listed below: K = Know the terminology C = Comprehend so as to paraphrase/illustrate A = Apply it in some way, in homework assignments or projects N = Elective Algorithms (CS 5310) (Review and assignments on) Performance analysis: Iterative/recursive algorithms (A), Asymptotic analysis (A), Recurrence relations (C, A) Algorithm design paradigms (review and assignments/implementations): Divide-and-

conquer (quicksort (A), merge sort (A), K-th order selection (A),...), Greedy method (greedy knapsack (A), minimum cost spanning trees (A), shortest paths/dijkstra s algorithm (A), Huffman trees/codes (C),...), Dynamic programming (all- pairs shortest paths/floyd s algorithm (A), TSP (K), 0/1 knapsack (K)), Backtracking (N -queens (C),...), Branch-and-bound ((n 2 1)-puzzle) (C) Data structures: Embedded in the above topics, plus some more advanced such as AVLtrees (C), 2-3 trees (A), B-trees (A), min-max heaps (C) Parallel algorithms: SIMD/MIMD (C), Some coverage/examples of shared memory (Pthreads, OpenMP) programs (K), and message passing (MPI) (K) DB/data management applications. Algorithms Recitation - Project/Assignment ideas Implement and compare quicksort vs. mergesort. Consider variations of quicksort. Compare sorting algorithms - linked list vs. array implementations. Compare various priority queue implementations - can consider binary trees, Fib heaps etc. Compare shortest path algorithms - Dijkstra vs modified Dijkstra (using heaps). Compare min cost spanning tree solutions - Prim s vs. Kruskal s, etc. Implement B-tree variations - 2-3 search trees - leaves at the same level versus others, B+ trees etc. Implement dynamic programming - chain matrix multiplication, all pairs shortest paths etc. K-select implementation - vary group-size and compare performance. K-select - have multiple arrays and then k-select from combined (arrays could be sorted, unsorted) Weighted selection. Puzzle solving - n-queens, Sudoku, chess etc. Dictionary (with user-defined entries, multiple dictionaries, shared by multi-users, etc.) Calendar, contact list,... Document (email) organizer (by subject, keyword, etc.)

CS5541 Computer Systems 3 credit hours 2 hours lecture and 2 hours recitation every week This course offers an intensive study of computer system design, emphasizing modern operating systems and their impact on application programming. Topics covered include: processes and threads; CPU scheduling; process synchronization; deadlock, memory management; cache, main memory; virtual memory; virtual machine; shared-memory and message-passing based parallelism; clusters; database concepts; security and protection; authentication; and cloud computing. Learning Outcomes Reinforce the essential concepts in computer systems, and develop a systems foundation in computer science. Apply the concepts covered in the course to written and practical problems. Students who earn a C or better in this course should have knowledge of o Processes management including processes and threads, CPU scheduling, process synchronization, deadlock; o Memory management including swapping, page replacement, segmentation, storage and I/O, file and directory, disk; o Memory Hierarchy including cache, main memory, virtual memory, virtual machine; o Parallelism including instruction-level parallelism, data-level parallelism, threadlevel parallelism, shared-memory and message-passing, multiprocessors and clusters; o Database including data organization, indexing, RAID, concurrency control, transaction processing; o Security and Protection; o Cloud computing. Topics/modules with Bloom classifications are listed below: K = Know the terminology C = Comprehend so as to paraphrase/illustrate A = Apply it in some way, in homework assignments or projects N = Elective Computer Systems (CS 5541) Process Management: Memory Management: Memory Hierarchy: Machine(C), Parallelism: Processes and Threads (A), CPU scheduling (A), Process synchronization (A), Deadlock(C), Swapping (C), Page Replacement(C), Segmentation(C), Storage and I/O (C), File and Directory (A), Disk(C) Cache(C), Main memory(c), Virtual memory (C), Virtual Instruction- level (C), data- level (C), thread- level(c),

Clusters(C) Database: Security: Cloud: Shared- memory and Message- Passing (A), Multiprocessors and Data Organization(C), Indexing, RAID(C), Concurrency Control(C), Transaction Processing (C) Security and Authentication (K) Cloud computing (K) Systems Recitation - Project/Assignment ideas Implement a command line interpreter (that is, shell) Develop a real and working web server Build a user- level library that implements a good portion of a file system Build a version control system

Theory Foundations (CS 5800) Catalog Description The course covers the theory of computer science emphasizing automata, grammars and their applications in the specification of languages and computer systems, models of computation, and complexity. Analytic and problem solving abilities will be reinforced, and concepts covered in the course will be applied to real-world problems. Learning outcomes A. General learning outcomes: - Reinforce analytic development and problem solving abilities, and develop a foundation in computer science. - Show progress with regard to understanding the theory of computation (for use, e.g., in further graduate level courses), including knowledge and use of terminology and how the theory connects with real-world applications, possibly in different and new areas. - Apply the concepts covered in the course to written and practical problems, e.g., by combining problem solving with computer programming and the use of software tools as part of assignments and a semester project. The latter may be done in teams or individually. B. Content specific outcomes: Students who earn a C or better will demonstrate - an introductory to intermediate-level knowledge of definitions, theorems and algorithms for problem solving relating to automata, grammars and formal languages; - knowledge of the theory of decidability, time & space complexity analysis and complexity classes, and models of computation; - the ability to synthesize knowledge and use tools of automata, grammars and computational models to solve problems relating to language specification, compiling and machine computation. Topics/modules with Bloom classifications are listed below: K = Know the terminology C = Comprehend so as to paraphrase/illustrate A = Apply it in some way, in homework assignments or projects N = Elective Review of discrete mathematics and proof methods (A), cardinality/countability (C); Formal languages, the Chomsky hierarchy: languages, their grammars, and automata (regular (A), context-free (A), context-sensitive (K), recursively enumerable (C)), their grammars, and automata (finite state automata D/NFA (A), push-down automata (A),

linear-bounded automata (K), Turing machines (A)); Stochastic automata (Markov models)(c)) Undecidability: Church-Turing thesis (C); some undecidable problems (C); reductions (K); relation to recursively enumerable languages (C), recursive languages (C), Turing machines (C) Intractable problems, complexity: Non-deterministic time and space complexity (C), Polynomial time and space, classes P and NP (C); some NP-Complete problems (K) Applications to compiling: lexical analysis (C), parsing (LL(k), LR(k) (K)), ambiguity (C) Models of computation: λ-calculus (K) (in relation to functional languages such as Lisp, Scheme,...); (partial-) recursive functions (K); Markov algorithms (C) (in relation to logic programming languages such as Prolog); cellular automata (K) Theory Foundations Recitation - Project/Assignment ideas Implement a Regular Expression parser: Take as input the regular expression; convert the input regular expression to an NFA; convert the NFA obtained to a DFA and regular grammar. Convert DFA to a minimum state DFA. Implement a simulator for a vending machine, elevator, traffic light control. Implement a yacc/bison description of a calculator. Implement the CYK algorithm to decide membership in the language of a given a context-free grammar. Example of a parser generator assignment: Generate and implement a bison (yacc) grammar which incorporates a part of XML, that includes the syntax for the given example. Your grammar should adhere to xml as given at the url http://www.w3schools.com/xml. You can check the syntax of your xml code using the xml validator at http://www.w3schools.com/xml. Generate a lexical analyzer that inputs xml code and recognizes your terminals (tokens). You may use flex (lex). Generate and run your parser. Extend your parser to handle more features of the example. Implement a Turing Machine simulator for a Turing machine transition table given on input. Apply to various examples. Supply a suitable user interface. Implement a Markov model.