1 / 52

CS 340 Data Structures

CS 340 Data Structures. Instructor: Xenia Mountrouidou. Dr. X – Computer Scientist PhD at North Carolina State University – Optical networks performance Worked for IBM – Software Performance Engineer Post doc at College of William and Mary

carlyn
Download Presentation

CS 340 Data Structures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 340 Data Structures Instructor: Xenia Mountrouidou

  2. Dr. X – Computer Scientist PhD at North Carolina State University – Optical networks performance Worked for IBM – Software Performance Engineer Post doc at College of William and Mary Scuba diver, manga comics collector, science fiction reader. CS150 Who am I?

  3. CS150 Who am I?

  4. CS 340 Course Objectives • At the end of this class you will be able to: • Make design decisions on which data structure is best to use regarding • performance, • memory, and • implementation efficiency. • Devise or use the most efficient algorithm in your projects. • Understand algorithmic complexity. • Think analytically and identify complexity of a program.

  5. CS 340 Course Objectives (cont.) • At the end of this class you will be able to: • Apply object oriented programming principles when you develop software. • Use and understand third party code. • Detect inefficiency of data structures and algorithms of third party code. • Develop projects using agile test driven approach (Junit). • Employ the Java API.

  6. CS 340 Why do you need CS 340? • Scenario: • You are a senior developer for Amazon. • You are working on their e-commerce application server! • You are a java guru, OO programming is second nature to you… but you do not understand data structures and algorithms. • BIG DEAL! Everything runs perfectly. Until one day… • You need to use a sorting algorithm to sort all potential sellers of a product based on price or ranking or relevance.

  7. CS 340 Why do you need CS 340? • Scenario (cont.): • On every click for a product search, your sorting algorithm will be used. • You choose bubble sort. After all, it has a cool name! • Let’s see what happens: • http://www.sorting-algorithms.com/ Software is not just coding… It is design, performance, memory consumption It is an art, a riddle to be solved with every project

  8. CS 340 More motivation • Social networks • Do you know which data structures FB developers are using? • Which data structure is better to use for a social network? • Do you know how Google search works? • What is the best algorithm and why? • Do they use any data structures? • Have you heard about Big Data?

  9. CS 340 Lectures • We meet at 15:00-16:45, every Tues/Thurs, at Merritt Penticoff Science Bld, Room 130 • Check the schedule on the class webpage • Reading and examples will be posted online • Lectures will be interactive. This means: • You will need to study the new material before every lecture (slides and book or online material) • We will have a lab on every lecture, so you will need to code in almost every lecture • You will have a quiz every Tuesday on the material that you studied for the in-class work • You will have a test every Thursday on past material

  10. CS 340 Lectures • I will not talk more than half an hour • I will have three breaks (at least) during this half hour. You can bring up your questions during this time • I would like all of you to question me or yourself whether you understand the material • During lectures I may demonstrate coding snippets

  11. CS 340 How to get help • Join my office hours! M/W/F 9-10:30 am at MP203 • Check the class website frequently. • Use the textbooks: • “Data Structures: Abstraction and Design Using Java”, Second Edition by Elliot B. Koffman, Paul A. T. Wolfgang • “Thinking in Java”, Bruce Eckel, 3rd edition (free online!) • “Introduction to the design and analysis of Algorithms”, AnanyLevitin (on BB) • Experiment with code. It’s fun…

  12. CS 340 Grading • Homework and Programming projects will be posted online on BlackBoard and on the class website • You will upload your completed assignments on BlackBoard

  13. CS 340 Programming Projects • They involve • Design • Coding • Testing • Debugging • These can be done in pairs • You need to send me an e-mail until the end of the secondweek of classes with your team members • Each team member will evaluate his/her team mate

  14. CS 340 Homework • It will involve: • Analytical thinking • Computational thinking • A little bit of math • Homework will be completed individually

  15. CS 340 Policies • Cheating means “submitting, without proper attribution, any computer code that is directly traceable to the computer code written by another person.” • Or even better: • “Any form of cheating, including concealed notes during exams, copying or allowing others to copy from an exam, students substituting for one another in exams, submission of another person’s work for evaluation, preparing work for another person’s submission, unauthorized collaboration on an assignment, submission of the same or substantially similar work for two courses without the permission of the professors. Plagiarism is a form of Academic Misconduct that involves taking either direct quotes or slightly altered, paraphrased material from a source without proper citations and thereby failing to credit the original author. Cutting and pasting from any source including the Internet, as well as purchasing papers, are forms of plagiarism.” • I give students a failing homework grade for any cheating. • A second cheating attempt will be escalated

  16. CS 340 Policies • You may discuss homework problems with classmates, after you have made a serious effort in trying the homework on your own. • You can use ideas from the literature (with proper citation). • You can use anything from the textbooks/notes. • The code you submit must be written completely by you.

  17. CS 340 Policies • Read the collaboration policy carefully. • Late policy: • 5% is reduced by every day the homework is late

  18. CS 340 Principles of Pair Programming

  19. CS 340 Principles of Pair Programming • All I Really Need to Know about pair programming I Learned in Kindergarten • Share everything. • Play fair. • Don’t hit people. • Put things back where you found them. • Clean up your own mess. • Don’t take things that aren’t yours. • Say you’re sorry when you hurt somebody.

  20. CS 340 Principles of Pair Programming • Wash your hands before you eat. • Flush. • Warm cookies and cold milk are good for you. • Live a balanced life – learn some and think some and draw and paint and sing and • Dance and play and work every day some. • Take a nap every afternoon. • When you go out into the world, watch out for traffic, hold hands and stick together. • Be aware of wonder.

  21. CS 340 Programming languages… a bit of history

  22. CS 340 Programming Language Evolution • 1st generation: Machine language • 2nd generation: Assembler • 3rd generation: COBOL, FORTRAN, C, ALGOL, BASIC, C, C++, C#, Pascal, Ada and … Java • 4th generation: SQL, spreadsheets, Mathematica, MATLAB, SAS • 5th generation: (example, anyone?)

  23. CS 340 Why So Many Languages? • Bring the language “closer” to the problem. • But 4GLs are typically focused on specialized domains (e.g., relational databases). • We want a language that is general purpose, yet can easily be “tailored” to any domain.

  24. CS 340 Java vs C#

  25. Not so different from each other • C# versus Java : syntactic differences • C# versus Java : a developer's perspective CS440 Java vs C#

  26. Java vsC#: Program Structure

  27. Java vsC#: Comments

  28. Java vsC#: Data Types

  29. Java vsC#: Data Types

  30. Java vsC#: Constants

  31. Java vsC#: Operators

  32. Java vsC#: Operators

  33. Java vsC#: Choices

  34. Java vsC#: Choices

  35. Java vsC#: Loops

  36. Java vsC#: Loops

  37. Java vsC#: Arrays

  38. Java vsC#: Functions

  39. Java vsC#: Functions

  40. Java vsC#: Functions

  41. Java vsC#: Strings

  42. Java vsC#: Strings

  43. Java vsC#: Exception Handling

  44. Java vsC#: Namespaces

  45. Java vsC#: Classes / Interfaces

  46. Java vsC#: Classes / Interfaces

  47. Java vsC#: Constructors / Destructors

  48. Java vsC#: Objects

  49. Java vsC#: Properties

  50. Java vsC#: Console I/O

More Related