CS-2852 Data Structures LECTURE 1A Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com Software In A Nutshell PROGRAMS = ??? Software In A Nutshell PROGRAMS = ALGORITHMS + DATA STRUCTURES Niklaus Wirth, 1976 Why Have Data Structures? Why Have Data Structures? 01001000011001010110110001101 10001101111001000000111011101 10111101110010011011000110010 00010000100100000010101110110 01010110110001100011011011110 11011010110010100100000011101 00011011110010000001000011010 10011001011010011001000110101 001110000011001000100001 Course Description I This course covers the organization of data and the algorithms that act upon them. From the official MSOE Course description at http://resources.msoe.edu/cdb/course.php?course=CS-2852 PROGRAMS = DATA + ALGORITHMS Niklaus Wirth CS-2852 Data Structures, Andrew J. Wozniewicz Course Description II The topics of arrays, linked lists, stacks, queues, trees, sets, and hash tables are introduced. From the official MSOE Course description at http://resources.msoe.edu/cdb/course.php?course=CS-2852 CS-2852 Data Structures, Andrew J. Wozniewicz Course Description III Fundamentals of algorithm performance are also introduced, with an emphasis placed on time complexity analysis. From the official MSOE Course description at http://resources.msoe.edu/cdb/course.php?course=CS-2852 CS-2852 Data Structures, Andrew J. Wozniewicz Course Description IV Laboratory activities include implementation of data structures as well as the application of data structures from standard libraries. From the official MSOE Course description at http://resources.msoe.edu/cdb/course.php?course=CS-2852 Notebook Computer Required CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes I Upon successful completion of this course, the student will: • understand and apply complex data structures and algorithms CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes II Upon successful completion of this course, the student will: • use appropriate algorithms (and associated data structures) to solve problems CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes III Upon successful completion of this course, the student will: • have a thorough understanding of commonly used library data structures CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes IV Upon successful completion of this course, the student will: • be able to analyze the time complexity of algorithms The Big-Oh Notation CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes V Upon successful completion of this course, the student will: • understand the use of recursion in problem solving Recursion, n. See recursion. CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes VI Upon successful completion of this course, the student will: appropriate • be able to use data structures in software design and implementation CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes VII Upon successful completion of this course, the student will: • be able to apply standard library data structures in software design CS-2852 Data Structures, Andrew J. Wozniewicz Course Outcomes VIII Upon successful completion of this course, the student will: • be able to select appropriate data structures for a given application CS-2852 Data Structures, Andrew J. Wozniewicz Andrew J. Wozniewicz MS/SE Adjunct Assistant Professor • E-Mail: wozniewicz@msoe.edu • Phone: (414) 277-2435 • Office: L-352 – Hours: Tue & Thu 7:00 – 8:30 PM • Web: myweb.msoe.edu/wozniewicz CS-2852 Data Structures, Andrew J. Wozniewicz Andrew J. Wozniewicz’s Bio • Last name is Polish and is pronounced: Voz-Nye-Vitch • Hands-On Developer/Software Engineer • Founder/President/Principal Consultant of Optimax Corporation since 1993 • Experience in Financial, Insurance, Manufacturing, Medical, Publishing, Transportation, … Industries. CS-2852 Data Structures, Andrew J. Wozniewicz CS-2852 Data Structures, Andrew J. Wozniewicz Your Professor’s Credentials • Master of Science in Computer Science Software Engineering Concentration DePaul University, Chicago, IL, 1997 • Bachelor of Mathematics in Computer Science, University of Waterloo, Ont., 1992 • Self-employed in the Software Development industry since 1985 CS-2852 Data Structures, Andrew J. Wozniewicz Prerequisites (Direct) SE-1021 Software Development II – explain the rationale for object-oriented design and programming – make appropriate use of exception handling – apply composition, inheritance, and interfaces – distinguish between extending a class (inheritance) and implementing an interface – design and implement simple Java classes and packages – document the implementation of small software systems – translate Java code into UML class and sequence diagrams – use classes from the Java standard library to read and write files on disk – use classes from the Java standard library to create functional graphical user interfaces – interpret Javadoc to make appropriate use of standard library classes CS-2852 Data Structures, Andrew J. Wozniewicz Prerequisites (Indirect) SE-1011 Software Development I – design and document an algorithmic solution for a given problem statement – create and interpret complex expressions that use relational and Boolean operators – select the appropriate selection control statement for a given task – use while/do-while/for statements to control repetition in algorithmic solutions – select the appropriate repetition control statement for a given task – translate UML class diagrams into Java code – design and implement simple classes – design and implement class and object methods – use existing Java class libraries – design and implement simple Java programs – declare and use collections of primitive and object data using arrays – declare and use collections of object data using ArrayLists CS-2852 Data Structures, Andrew J. Wozniewicz Textbook Data Structures, Abstraction and Design Using Java, 2nd ed. Koffman and Wolfgang, Wiley, 2010 ISBN: 0-470-12870-4 978-0-470-12870-1 CS-2852 Data Structures, Andrew J. Wozniewicz Course Schedule Tue, Thu, 5:30 PM - 6:45 PM Location: MAIN SCI S359 Wed, 5:30 PM - 7:20 PM Location: MAIN LIB L100 CS-2852 Data Structures, Andrew J. Wozniewicz Communications • Course Website (syllabus, schedule, rules) myweb.msoe.edu/wozniewicz/cs2582 • Website Mirror: optimax.com/msoe/wozniewicz/cs2582 • Blackboard (labs, homework, quizzes, announcements, forum, etc.) blackboard.msoe.edu CS-2852 Data Structures, Andrew J. Wozniewicz Feedback Forms Leave on my desk at the end of the class. Questions… What went well? What did not go so well? CS-2852 Data Structures, Andrew J. Wozniewicz Grading Weights Quizzes Lab Projects Midterm Homework Final Exam 15% 15% 20% 25% 25% CS-2852 Data Structures, Andrew J. Wozniewicz Quizzes • • • • • Cover the material to date Each quiz is worth 100 points May contain “bonus” questions All material covered to date Material for the specific lab CS-2852 Data Structures, Andrew J. Wozniewicz Homework • 4 programming projects – Substantial – Given out in Labs – Due 2 weeks later • Weight: 25% • 100-point scale • Bonus points possible CS-2852 Data Structures, Andrew J. Wozniewicz Lab Preparation • Quiz at the beginning of each lab. • You are expected to read the lab assignment before the lab begins. • All Lab assignments are worth 100 points per week. • There is a 10% per day late penalty for lab reports submitted after the scheduled due date (Friday 11:59 pm). CS-2852 Data Structures, Andrew J. Wozniewicz Grading Scale • • • • • • • • A (93-100) AB (89-92) B (85-88) BC (81-84) C (77-80) CD (74-76) D (70-73) F (0-70) CS-2852 Data Structures, Andrew J. Wozniewicz Grading Criteria The grading formula applies only to those students who have successfully met the objectives of this course. There is a 10% per business day late penalty for all written work. Any work more than 5 days late will receive a 0 grade. You must ultimately complete all work in order to pass the course. You are encouraged to discuss homework and programming assignments with your fellow students, however, each of you is responsible for doing and turning in your own work. Plagiarism (i.e. cheating) is not tolerated CS-2852 Data Structures, Andrew J. Wozniewicz Attendance • Attendance in class is expected. Dropping the course? Make sure you notify the Registrar. • Attendance in lab is mandatory. CS-2852 Data Structures, Andrew J. Wozniewicz Labs, Quizzes, Exams: Summary Labs are generally due Friday night. Quizzes will generally be given at the beginning of the labs. Quiz material will cover homework, lecture, and lab topics. Exams will cover quiz, homework, lecture, and lab topics. Specific info will be posted on the Blackboard and/or website. Please, check regularly. CS-2852 Data Structures, Andrew J. Wozniewicz Course Schedule Wk Tue Wed Thu 1 9/6 LECT01 9/7 LAB01 9/8 LECT02 2 9/13 LECT03 9/14 LAB02 9/15 LECT04 3 9/20 LECT05 9/21 LAB03 9/22 LECT06 4 9/27 LECT07 9/28 LAB04 9/29 LECT08 5 10/4 LECT09 10/5 LAB05 10/6 LECT10 6 10/11 LECT11 10/12 LAB06 10/13 LECT12 7 10/18 LECT13 10/19 LAB07 10/20 LECT14 8 10/25 LECT15 10/26 LAB08 10/27 LECT16 9 11/01 LECT17 11/02 LAB09 11/03 LECT18 10 11/08 LECT19 11/09 LAB10 11/10 LECT20 11 FINAL EXAM 11/15 (TBD) CS-2852 Data Structures, Andrew J. Wozniewicz Questions? Image copyright © 2010 andyjphoto.com Get to Know Your Neighbor… • Name • Where from… • Program and Level of Study • One-sentence Description Image copyright © 2010 andyjphoto.com