{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

01+-+Introduction

01+-+Introduction - EECS 280 Manifesto Mathematics...

This preview shows pages 1–2. Sign up to view the full content.

9/19/10 1 Introduction EECS 280 Programming and Introductory Data Structures 1 EECS 280 Manifesto Mathematics , especially as used by physics, is the formalism we use to describe “what is” The physical world is modeled by equations. Solutions to these equations give us insight into the world. Classical mathematics, however, does not say anything about how these processes unfold. For that, we need something else… Computer Science is the formalism we use to describe “how to” The computer science world uses algorithms to do this. Algorithm : An abstract sequence of actions composed to solve a problem. Program : A concrete set of program statements which implement some algorithm. 2 What you need for EECS 280 3 Prior programming experience is the only pre-req (i.e. ENGR 101 is not required) You do not need to have prior C++ and/or Linux experience If you do not have C++ and/or Linux experience, this will not cause a significant issue. However, you will need to learn basic C++ syntax on your own for things like selection, iteration, basic I/O, etc… (see Ctools background material and chapters 1-5) Linux will be covered in the first few discussions and in office hours if needed The Task of Programming Accept a possibly incomplete and/or imprecise specification of the problem. Design an effective algorithm that: Correctly satisfies the specification. Is efficient in its (asymptotic) usage of space and time (i.e. how does it behave when we change problem parameters). Implement the algorithm correctly and efficiently An implementation of an algorithm is correct if it behaves as the algorithm is intended for all inputs and in all situations. Correctness is never negotiable. 4 The Task of Programming (Implementation Cont’d) There are three notions of an efficient implementation The implementation has (concrete) space/time requirements asymptotically similar to the more abstract requirements of the corresponding algorithm. Of all of the "asymptotically good" possible implementations, this one is among the better ones in absolute, concrete terms. It does not take an undue amount of effort for a programmer to: Write the implementation in the first place (simplicity). Improve/adapt the implementation to more general or closely related algorithms (elegance). So, efficient can mean fast, simple, and/or elegant. 5 The Task of Programming Two more pieces of the programming puzzle: Testing Maintenance These are often be overlooked when a deadline approaches.

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

• As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

Kiran Temple University Fox School of Business ‘17, Course Hero Intern

• I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

Dana University of Pennsylvania ‘17, Course Hero Intern

• The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

Jill Tulane University ‘16, Course Hero Intern