520 likes | 699 Views
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
E N D
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 Scuba diver, manga comics collector, science fiction reader. CS150 Who am I?
CS150 Who am I?
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.
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.
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.
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
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?
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
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
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…
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
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
CS 340 Homework • It will involve: • Analytical thinking • Computational thinking • A little bit of math • Homework will be completed individually
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
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.
CS 340 Policies • Read the collaboration policy carefully. • Late policy: • 5% is reduced by every day the homework is late
CS 340 Principles of Pair Programming
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.
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.
CS 340 Programming languages… a bit of history
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?)
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.
CS 340 Java vs C#
Not so different from each other • C# versus Java : syntactic differences • C# versus Java : a developer's perspective CS440 Java vs C#