CIEE Global Institute - Madrid. Computer Science II Data Structures Course number:

Similar documents
GACE Computer Science Assessment Test at a Glance

MAT 122 Intermediate Algebra Syllabus Summer 2016

Data Structures and Algorithms

Self Study Report Computer Science

WSU Five-Year Program Review Self-Study Cover Page

CS 101 Computer Science I Fall Instructor Muller. Syllabus

Short vs. Extended Answer Questions in Computer Science Exams

CS 1103 Computer Science I Honors. Fall Instructor Muller. Syllabus

We are strong in research and particularly noted in software engineering, information security and privacy, and humane gaming.

Mathematics. Mathematics

THE UNIVERSITY OF SYDNEY Semester 2, Information Sheet for MATH2068/2988 Number Theory and Cryptography

Course Content Concepts

CS Course Missive

Course Syllabus for Math

CLASS EXPECTATIONS Respect yourself, the teacher & others 2. Put forth your best effort at all times Be prepared for class each day

LEGO MINDSTORMS Education EV3 Coding Activities

Radius STEM Readiness TM

SOUTHERN MAINE COMMUNITY COLLEGE South Portland, Maine 04106

STA 225: Introductory Statistics (CT)

Be aware there will be a makeup date for missed class time on the Thanksgiving holiday. This will be discussed in class. Course Description

(Sub)Gradient Descent

Instructor: Matthew Wickes Kilgore Office: ES 310

1.11 I Know What Do You Know?

Study Center in Prague, Czech Republic

University of Arkansas at Little Rock Graduate Social Work Program Course Outline Spring 2014

CENTRAL MAINE COMMUNITY COLLEGE Introduction to Computer Applications BCA ; FALL 2011

Grading Policy/Evaluation: The grades will be counted in the following way: Quizzes 30% Tests 40% Final Exam: 30%

Guide to Teaching Computer Science

An Introduction to the Minimalist Program

Beginning and Intermediate Algebra, by Elayn Martin-Gay, Second Custom Edition for Los Angeles Mission College. ISBN 13:

Albright College Reading, PA Tentative Syllabus

Syllabus for PRP 428 Public Relations Case Studies 3 Credit Hours Fall 2012

A Neural Network GUI Tested on Text-To-Phoneme Mapping

CS Machine Learning

RANKING AND UNRANKING LEFT SZILARD LANGUAGES. Erkki Mäkinen DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF TAMPERE REPORT A ER E P S I M S

WiggleWorks Software Manual PDF0049 (PDF) Houghton Mifflin Harcourt Publishing Company

STA2023 Introduction to Statistics (Hybrid) Spring 2013

School of Innovative Technologies and Engineering

Journalism 336/Media Law Texas A&M University-Commerce Spring, 2015/9:30-10:45 a.m., TR Journalism Building, Room 104

S T A T 251 C o u r s e S y l l a b u s I n t r o d u c t i o n t o p r o b a b i l i t y

Algebra 1, Quarter 3, Unit 3.1. Line of Best Fit. Overview

Syllabus for ART 365 Digital Photography 3 Credit Hours Spring 2013

AP Calculus AB. Nevada Academic Standards that are assessable at the local level only.

On Human Computer Interaction, HCI. Dr. Saif al Zahir Electrical and Computer Engineering Department UBC

PELLISSIPPI STATE TECHNICAL COMMUNITY COLLEGE MASTER SYLLABUS. PROFESSIONAL PRACTICE IDT 2021(formerly IDT 2020) Class Hours: 2.0 Credit Hours: 2.

Syntax Parsing 1. Grammars and parsing 2. Top-down and bottom-up parsing 3. Chart parsers 4. Bottom-up chart parsing 5. The Earley Algorithm

CS 100: Principles of Computing

Bachelor Class

AGN 331 Soil Science Lecture & Laboratory Face to Face Version, Spring, 2012 Syllabus

Course Syllabus Art History II ARTS 1304

Ryerson University Sociology SOC 483: Advanced Research and Statistics


On-Line Data Analytics

Language Arts Methods

Attendance. St. Mary s expects every student to be present and on time for every scheduled class, Mass, and school events.

Theory of Probability

SAT MATH PREP:

HCI 440: Introduction to User-Centered Design Winter Instructor Ugochi Acholonu, Ph.D. College of Computing & Digital Media, DePaul University

Syllabus: CS 377 Communication and Ethical Issues in Computing 3 Credit Hours Prerequisite: CS 251, Data Structures Fall 2015

Revised on Common Course Number Data Sheet 221 Course Identification. Campus Course Attribute. Prerequisite Text Min.

Collins Hill High School Student Government Association Application for Membership

On the Polynomial Degree of Minterm-Cyclic Functions

MULTIMEDIA Motion Graphics for Multimedia

ITSC 1301 Introduction to Computers Course Syllabus

Texts and Materials: Traditions and Encounters, AP Edition. Bentley, Ziegler. McGraw Hill, $ Replacement Cost

Math 098 Intermediate Algebra Spring 2018

Pierce County Schools. Pierce Truancy Reduction Protocol. Dr. Joy B. Williams Superintendent

Math 121 Fundamentals of Mathematics I

DIGITAL GAMING AND SIMULATION Course Syllabus Advanced Game Programming GAME 2374

Intensive English Program Southwest College

MGMT 3362 Human Resource Management Course Syllabus Spring 2016 (Interactive Video) Business Administration 222D (Edinburg Campus)

ACCT 100 Introduction to Accounting Course Syllabus Course # on T Th 12:30 1:45 Spring, 2016: Debra L. Schmidt-Johnson, CPA

Algorithms and Data Structures (NWI-IBC027)

Page 1 of 8 REQUIRED MATERIALS:

Grammars & Parsing, Part 1:

Machine Learning and Data Mining. Ensembles of Learners. Prof. Alexander Ihler

MATH 108 Intermediate Algebra (online) 4 Credits Fall 2008

MATH 205: Mathematics for K 8 Teachers: Number and Operations Western Kentucky University Spring 2017

ENEE 302h: Digital Electronics, Fall 2005 Prof. Bruce Jacob

Course Description. Student Learning Outcomes

ASTRONOMY 2801A: Stars, Galaxies & Cosmology : Fall term

Test How To. Creating a New Test

Software Development: Programming Paradigms (SCQF level 8)

Innovative Methods for Teaching Engineering Courses

COURSE INFORMATION. Course Number SER 216. Course Title Software Enterprise II: Testing and Quality. Credits 3. Prerequisites SER 215

16 WEEKS STUDY PLAN FOR BS(IT)2 nd Semester

Designing for Visualization & Communication

A Version Space Approach to Learning Context-free Grammars

BRAZOSPORT COLLEGE LAKE JACKSON, TEXAS SYLLABUS. POFI 1301: COMPUTER APPLICATIONS I (File Management/PowerPoint/Word/Excel)

LBTS/CENTER FOR PASTORAL COUNSELING

Designing a Computer to Play Nim: A Mini-Capstone Project in Digital Design I

Department of Drafting & Design Engineering Technology. Syllabus

Computer Science (CS)

Algebra 2- Semester 2 Review

Writing Research Articles

Instructor: Khaled Kassem (Mr. K) Classroom: C Use the message tool within UNM LEARN, or

Multimedia Application Effective Support of Education

Power Systems Engineering

PreAP Geometry. Ms. Patricia Winkler

Transcription:

CIEE Global Institute - Madrid Course name: Computer Science II Data Structures Course number: (GI) CMPS 2001 MASP Programs offering course: Madrid Open Campus Block Open Campus track: STEM and Society Language of instruction: English U.S. semester credits: 3 Contact hours: 45 Term: Fall 2019 Course Description The course provides a contemporary foundation in design, analysis and application of data structures and algorithms for computer science students and other disciplines using computer programming. It reviews and builds on basic programming and language tools for algorithm analysis and general design paradigms using C++. Students will use object-oriented programming, including recursion, arrays, lists, stacks, queues, trees, hashing and other operations. Graphing and algorithm design techniques are also covered. Data structures and the algorithms used to manipulate data structures will be applied to solving problems in a broad array of contexts.. Learning Objectives By the end of this course, students will be able to: Define and apply elementary and advanced data structures, including arrays, stacks, queues, lists, trees and graphs. Write efficient and useful object-based programs using C++ Evaluate solutions derived from using data structures and algorithms. Use data structures and algorithms to solve problems in a wide context. Communicate use of data structures and algorithms effectively, including oral, written and visual communication. Build a foundation for future computer studies. Appreciate the impact of computer programming in modern life, in the United States and their host country. 1

Course Prerequisites Computer Science I Programming or similar introductory programming course/experience. Previous experience with C++ is not required. Methods of Instruction The course will be taught using lectures, class discussions, lecture activities, reading assignments, problem sets, presentations, program analysis and program writing. In addition, students will local related facilities or other points of interest, conducting interviews with local computer programmers. Students will work individually and in groups on assigned problem sets and programs. Students are expected to read portions of the textbooks and complete problems before lectures. Students will work in groups to present current applications of computer programming in their lives and in the lives of those in the local community. Assessment and Final Grade Weekly Exams (Five) 20 % Problem Sets (Five) 25 % Program 1 10% Program 2 10% Program 3 15% Participation 20 % Total 100% Course Requirements Weekly Exams Each week, students will take an exam based upon the previous week s material. These exams will include standard exam formats of True/False, Multiple Choice, Short Answer and Problem Solving. Each exam will take approximately 20-30 minutes. 2

Problem Sets Problems from the instructor or textbook will be assigned to individuals or groups. Student solutions to these problems will be collected and discussed in review sessions. The instructor will work through or give solutions to all problems. Similar problems will appear on weekly exams. Assessment for problem sets will be based on timely and correct completion of problems. Program 1 Groups of 2-3 students will write a program of at least 50 lines, demonstrating basic data structure functions of C++ Program 2 Individual students will write a program of at least 75 lines that demonstrates basic data structures, object-based programming and algorithms. Program 3 Individual students will write a program of at least 100 lines that demonstrates basic and advanced data structures, object-based programming and algorithms. Group Project The class will be divided into groups of 3-5 students. This project will involve using C++ programming to address a practical application of class concepts. Students will use both basic and advanced data structures and algorithm functions, will debug early versions of their programs and rewrite algorithms to increase efficiency. Project ideas must be approved by the instructor and feedback will be given by instructor throughout the project s development. Group Presentations Students will deliver a 15-minute presentation of their group project. The presentation will focus on program syntax, the behavior of data structures, efficiency of algorithms and utility of the program to solve a real world problem. Participation Each student is required to attend all sessions and to participate actively in class discussions, group presentations and during site visits. Be prepared to read approximately 25,000 words weekly and take extensive notes in lectures. Textbook chapters will be assigned as a reference but all tested material will be in lectures. 3

Attendance is mandatory. Participation grade will reflect attendance as well as active participation in classroom and site visit activities. Class Attendance Regular class attendance is required throughout the program, and all unexcused absences will result in a lower participation grade for any affected CIEE course. Due to the intensive schedules for Open Campus programs, unexcused absences that constitute more than 10% of the total course will result in a written warning. Students who transfer from one CIEE class to another during the add/drop period will not be considered absent from the first session(s) of their new class, provided they were marked present for the first session(s) of their original class. Otherwise, the absence(s) from the original class carry over to the new class and count against the grade in that class. For CIEE classes, excessively tardy (over 15 minutes late) students must be marked absent. Attendance policies also apply to any required co-curricular class excursion or event, as well as to Internship, Service Learning, or required field placement. Students who miss class for personal travel, including unforeseen delays that arise as a result of personal travel, will be marked as absent and unexcused. No make-up or re-sit opportunity will be provided. Attendance policies also apply to any required class excursion, with the exception that some class excursions cannot accommodate any tardiness, and students risk being marked as absent if they fail to be present at the appointed time. Unexcused absences will lead to the following penalties. Percentage of Total Course Equivalent Number of Open Hours Missed Campus Semester classes Up to 10% 1 content classes, or up to 2 language classes 10 20% 2 content classes, or 3-4 language classes More than 20% 3 content classes, or 5 language classes Minimum Penalty Participation graded as per class requirements Participation graded as per class requirements; written warning Automatic course failure, and possible expulsion 4

Weekly Schedule NOTE: this schedule is subject to change at the discretion of the instructor to take advantage of current experiential learning opportunities. Week 1 Session 1.1 General Overview Programming This session will form the introduction to the class; we will outline the course requirements and formal aspects of participation and engagement in class. This will be followed by the introduction to programming, providing basic facts and concepts. Students review related math concepts, including exponents, logarithms, series, modular arithmetic, proof by induction and proof by contradiction. They will briefly review recursion. Finally, students will familiarize themselves with some important features of C++. Readings: Chapter 1 Programming: A General Overview Watch: ForestKnight. 2018. 5 Things I Wish I Knew When I Started Programming https://www.youtube.com/watch?v=jfxcjh_owge Week 2 Session 2.1 Algorithm Analysis and Simple Data Structure Algorithm Analysis Students define algorithms as a set of instructions to solve a problem. They review basic components of algorithms. Students then consider how to estimate time required for a program or algorithm to run. They explore how to reduce the running time of algorithms without impacting output. They define recursion and discuss its use and misuse. They will work in groups to create very efficient algorithms for simple mathematical computations. Exam 1 (covers material from Week 1) Readings: Chapter 2 Algorithm Analysis 5

Watch: Dojo, C.S. 2018. Data Structures and Algorithms #1 What are Data Structures? https://www.youtube.com/watch?v=bum_19loj9a Due: Problem Set 1 Session 2.2 Simple Data Structures Students will define Abstract Data Types (ADTs) and the three most common ADTS. They then define, explore and use three basic data structures: lists, stacks and queues. Students examine programs to spot when and how these data structures are used. They will analyze and debug programs, and show how to efficiently perform operations on lists. Students introduce themselves to stack and queue ADTs and their uses in implementing recursion, operating systems and algorithm design. Students will work on simple programs in C++ that use these data structures. Chapter 3 Lists, Stacks and Queues Watch: Laackmann McDowell, G. 2016. Data Structures: Stacks and Queues. HackerRank https://www.youtube.com/watch?v=wji1wncintg Due: Problem Set 2 Week 3 Session 3.1 Trees and Hash Tables Trees Students explore how trees are used to implement the file system of several popular operating systems and how trees can be used to evaluate arithmetic expressions. They consider the use of trees in operating systems, compiler design and search engines. Students investigate how to use binary search trees to support searching operations in O(log N) average time, as well as O(log N) worst-case bounds. They go on to describe other tree types, their attributes and applications. 6

Quiz 2 (covers material from Week 2) Readings: Chapter 4 Trees Watch: Laackmann McDowell, G. 2016. Data Structures: Trees. HackerRank https://www.youtube.com/watch?v=oswtxtmglke Session 3.2 Hash Tables Students describe the hash table ADT and explore potential applications, including insertions, deletions and constant average time. They investigate several methods for implementing hash tables using hash functions. Students then compare these methods and analyze which are appropriate for different uses. They compare hash tables to binary trees and distinguish the pros and cons of each in different contexts. Readings: Chapter 5 Hashing Watch: Laackmann McDowell, G. 2016. Data Structures: Hash Tables. HackerRank https://www.youtube.com/watch?v=shs0km3wkv8 Session 3.3 Programming Workshop Students will work individually and in groups to apply concepts covered so far. They will examine existing programs and write their own, with a focus on when different data structures are used and how they impact algorithm efficiency. Students will begin to explore ideas for their group programming project. Read: Hayes, B. 2015. Cultures of Code. American Scientist 103(1): 10 https://www.americanscientist.org/article/cultures-of-code Due: Due: Program 1 Week 4 Priority Queues, Sorting 7

Session 4.1 Priority Queues (Heaps) During this session, students consider the importance of rankings in a queue. They investigate the efficient implementation of the priority queue ADT. They explore different uses of the priority queue in a variety of programming applications. They begin with simple implementations, go on to binary heaps and applications of priority queues. Students use the merge operation to explore d-heaps, Leftist Heaps and Skew Heaps. They describe binary queue structure, operations and implementation. Exam 3 (covers material from Week 3) Readings: Chapter 6 Priority Queues Watch: Taylor, D.S. 2015. Introduction to Binary Heaps.Algorithms with Attitude. https://www.youtube.com/watch?v=wcm3tqscbm8 Session 4.2 Computer Programming: Local Applications and Communication Students see that communicating highly technical and complicated computer concepts and related program functions can be a challenge. For this session, students visit a local industry or research facility that uses computer programming extensively. Computer programmers share aspects of their work, its business and social implications, and the importance of communicating their work and deliverables to their clients and society. Readings: Buna, S. 2017. Hard Coding Concepts Explained with Simple Real-Life Analogies. Free Code Camp. https://medium.freecodecamp.org/hard-coding-concepts-explained-withsimple-real-life-analogies-280635e98e37 Due: Session 4.3 Sorting 8

Students discuss the problem of assorting an array of elements and then begin to apply internal sorting to integers. They find there are several easy algorithms to sort, including insertion sort. Students explore the algorithms Shellsort, mergesort and quicksort. They move on to more complex sorting algorithms. They find that any general purpose algorithm requires Ω(N log N) comparisons. Students will emphasize analysis for code optimization. Readings: Chapter 7 Sorting Watch: Sorting Algorithms. 2014. CParsons2005. https://www.youtube.com/watch?v=jhpexhsdxwq Due: Program 2 Week 5 Session 5.1 Disjoint Sets Class, Graphs The Disjoint Sets Class During this session, students define the Disjoint Sets Class data structure. They show how it can maintain disjoint sets and be implemented with minimal coding. They see how to greatly increase its speed with only two simple observations. They describe the equivalence problem and explain how Disjoint Sets Class addresses it. They will analyze its impact on running time and apply it in a demonstration. Students will work in groups on their group programming project and will incorporate Disjoint Sets Class into their program. Exam 4 (covers material from Week 4) Readings: Chapter 8 The Disjoint Sets Class Session 5.2 Graph Algorithms Students discuss several common problems in graph theory. They investigate how these algorithms are useful in practice but can be too slow without specific attention to data structures. Students will take 9

several real-life problems and convert them to problems on graphs. They use algorithms to solve common graph problems. They demonstrate how data structure choice and use impact running time. Students use depthfirst search to solve several complex problems in linear time. Readings: Chapter 9 Graph Algorithms Session 5.3 Programming Workshop Students will work individually and in groups to apply all concepts covered so far. They examine, dug and rewrite existing programs, as well as write their own, with a focus on when different data structures are used and how they impact algorithm efficiency. Students will work on programming their group project. Read: Robertson, D. and Giunchiglia, F., 2013. Programming the social computer. Phil. Trans. R. Soc. A, 371(1987), p.20120379. https://royalsocietypublishing.org/doi/full/10.1098/rsta.2012.0379 Due: Program 3 Week 6 Session 6.1 Advanced Data Structures Algorithm Design Students switch their focus from algorithm implementation to design. They consider five common algorithm types used to solve problems. For each, they investigate the algorithm type s general approach, its use in several example applications and discuss its complexity and efficiency. The algorithm types are: Greedy, Divide and Conquer, Dynamic, Randomized and Backtracking. Students find, when confronted with a problem, they should consider these five algorithm types and use data structures to provide efficient solutions. Quiz 5 (covers material from Week 5) Readings: Chapter 10 Algorithm Design Techniques 10

Session 6.2 Amortized Analysis and Advanced Data Structures Here, students will analyze running time for several data structures considered earlier. They will consider the worst case running time for sequences of operations. Students define an amortized time bound and their limitations. In doing so, students explore and analyze binomial queue operations, skew heaps, the Fibonacci heap and splay trees. Students finalize their group programs and group program presentations. Readings: Chapter 11 Amortized Analysis Session 6.3 Next Steps and Project Presentations Students compare six data structures for practicality. Special attention is given to non-recursive, top down structure and the use of sentinel nodes. The data structures are the: Top-Down Splay Tree, Red-Black Trees, Treaps, Suffix Arrays and Trees, k-d Trees and Pairing Heaps. Students analyze and compare these, weighing trade-offs between code complexity, ease of deletion, searching and insertion costs. Course Materials Readings: Chapter 12 Advanced Data Structures and Implementation Course Textbook Weiss, M.A., 2013. Data structures & algorithm analysis in C++, 4 th edition. Pearson Education. Readings Buna, S. 2017. Hard Coding Concepts Explained with Simple Real-Life Analogies. Free Code Camp. Hayes, B. 2015. Cultures of Code. American Scientist 103(1): 10. Robertson, D. and Giunchiglia, F., 2013. Programming the social computer. Phil. Trans. R. Soc. A, 371(1987), p.20120379. 11

Online Resources Medlock, B. Top 12 Online Resources for Total Coding Beginners. Lifehack https://www.lifehack.org/articles/technology/top-12-online-resources-forbeginners-learning-code.html. 12