1 / 33

Algorithms and Inheritance

Algorithms and Inheritance. Dr. Jeyakesavan Veerasamy University of Texas at Dallas, USA jeyv@utdallas.edu. Agenda. Software: Then & Now SW Efficiency – does it matter? Latest buzz Trends in CS education Open Q&A.

herbst
Download Presentation

Algorithms and Inheritance

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. Algorithms and Inheritance Dr. Jeyakesavan Veerasamy University of Texas at Dallas, USA jeyv@utdallas.edu

  2. Agenda • Software: Then & Now • SW Efficiency – does it matter? • Latest buzz • Trends in CS education • Open Q&A Note: Almost all the content is based on my observations & my experience only.

  3. Complexity of software projects: historical snippets • Ad-hoc development model • Waterfall model • slow & unpredictable • heavy documentation effort • cost overruns & missed deadlines

  4. My experience with huge SW projects(Waterfall model) • Period of instability • collisons during merge • product delays • Is it good enough to release?

  5. Agile process

  6. Agile methods • Limited documentation • Better tracking of current status • Frequent releases • Continuous interaction with the customer • Several refinements: XP, SCRUM, …

  7. A typical industry project in 1990 New code C standard library Home-grown library

  8. Same industry project NOW New code Home-grown library Commercial libraries for industry segment IDE modules Open source components C++/Java standard library

  9. Questions • Any disadvantages of the latest approach? • Expert programmer: what does it mean? • Future projects: No code? Just integration? Knowledge of Java/C++/… down the drain?

  10. Application Specific Programming script script script … Intrepreter M1 M2 M3 Mn …

  11. Data Exchange A2 A1 A4 A3

  12. Data Exchange • Binary or text data  XML or JSON … • Independent data checkers tools available. A2 A1 A4 A3

  13. Design decisons • Purchase commercial modules or use open-source? • .NET or Java?

  14. Running time of a program or transaction processing time • ????

  15. Running time of a program or transaction processing time • amount of input: n • basic algorithm / actual processing • memory access speed • CPU/processor speed • # of processors? • compiler/linker optimization?

  16. Running time of a program or transaction processing time • amount of input: n  min. linear increase • basic algorithm / actual processing  depends on algorithm! • memory access speed  by a factor • CPU/processor speed  by a factor • # of processors?  yes, if multi-threading or multiple processes are used. • compiler/linker optimization?  ~20%

  17. Compare 3 algorithms

  18. Software efficiency: Do we really care? • Goal is to make software work & meet deadline for most industry projects. • For example, an intranet application may take 5 seconds to process a transaction, while hand-coded optimized version may take 4 seconds. Is this ok? • However there are exceptions. Let us consider a few such scenarios.

  19. Game Console • Inefficient algorithm  takes longer to run  requires higher-end CPU to keep realism • Higher end CPU  higher price for the console  product fails amid competition

  20. Web-server • Consider 2 web-server algorithm implementations that take 1 second and 5 second respectively to process a transaction. • Issues: • algorithm #2 tests web-users’ patience • 2nd web server capacity is low. • We can add 4x servers to improve the web-server capacity, but what can we do with the user’s wait-time?

  21. Daily data crunching • Any network collects tons of data to measure operational efficiency. Telecom network is no exception. • Daily data crunching (post-processing) is used to generate daily reports for management. • Issue: # of network nodes increased  more data process  Scripts started to take >1 day to run.

  22. Data crunching pseudocode • initial setup • loop • read one tuple • open db connection • send request to db • get response from db • close db connection • do some processing • post-processing

  23. Data crunching pseudocode • Equation for running time = c1. n + d1 • Time complexity is O(n) • initial setup • loop • read one tuple • open db connection • send request to db • get response from db • close db • post-processing

  24. Data crunching pseudocode • initial setup • open db connection • loop • read one tuple • send request to db • get response from db • close db • post-processing

  25. Data crunching pseudocode • Equation for running time = c2. n + d2 • Time complexity is still O(n), but the constants are different. • c2 < c1 • d2> d1 • initial setup • open db connection • loop • read one tuple • send request to db • get response from db • close db • post-processing

  26. Reasons for original design? • Why the initial script implementation was so inefficient? • Designed for small network – “get it done” mentality – works for now! • Not much thought process went into it. • It is an internal project. • Clearly it was not of “commercial” grade project.

  27. A few more points … • Standalone applications  Enterprise bundles • Local SW installation  intranet based • Build in-house  Buy & customize • Heavy text based coding  visual programming (GUI builders & debuggers …) • Desktops  Laptops  Smartphones

  28. SW projects: Multi-dimensional problem Companies want to complete Software Projects with • Smaller team • Limited resources • Higher quality • Reduced cost • On-time delivery This is what each project manager tries to do 

  29. Cloud computing • Possible for a small company to have just employees, laptops & web connectivity to do business! • Enables company data access from anywhere! • Even large companies move specific applications to the cloud - supports multiple locations naturally! • Example for personal cloud usage: Google Docs • Example for commercial cloud usage: Electronic medical records • Security concerns remain, but industry is gaining confidence.

  30. Smart-phone development • My kids know/play games in Android phone • For me, email, calendar and contacts are in sync with company data • Question: can we do more with them? • Industry trend is to port several meaningful business applications to smartphones. • Example for cross-platform development

  31. Game development • Lot of interest in real-time action games • Most games done in C/C++ in Los Angeles area • Algorithm optimization at work!

  32. Latest trends in CS education in USA • Difficulty in attracting US students to CS • Introduction to Programming : going visual • Alice, Scratch, GUI games, … • Java dominates in CS1 & CS2 courses • Industry projects in the final year • Online courses becoming popular, augmenting education landscape • Lots of online multimedia lectures in the web • Game design programs & Smart-phone applications • Augmenting open-source applications

  33. Questions & Answers Dr. Jeyakesavan Veerasamy jeyak7@gmail.com jeyv@utdallas.edu

More Related