340 likes | 433 Views
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.
E N D
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 Note: Almost all the content is based on my observations & my experience only.
Complexity of software projects: historical snippets • Ad-hoc development model • Waterfall model • slow & unpredictable • heavy documentation effort • cost overruns & missed deadlines
My experience with huge SW projects(Waterfall model) • Period of instability • collisons during merge • product delays • Is it good enough to release?
Agile methods • Limited documentation • Better tracking of current status • Frequent releases • Continuous interaction with the customer • Several refinements: XP, SCRUM, …
A typical industry project in 1990 New code C standard library Home-grown library
Same industry project NOW New code Home-grown library Commercial libraries for industry segment IDE modules Open source components C++/Java standard library
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?
Application Specific Programming script script script … Intrepreter M1 M2 M3 Mn …
Data Exchange A2 A1 A4 A3
Data Exchange • Binary or text data XML or JSON … • Independent data checkers tools available. A2 A1 A4 A3
Design decisons • Purchase commercial modules or use open-source? • .NET or Java?
Running time of a program or transaction processing time • ????
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?
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%
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.
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
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?
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.
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
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
Data crunching pseudocode • initial setup • open db connection • loop • read one tuple • send request to db • get response from db • close db • post-processing
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
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.
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
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
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.
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
Game development • Lot of interest in real-time action games • Most games done in C/C++ in Los Angeles area • Algorithm optimization at work!
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
Questions & Answers Dr. Jeyakesavan Veerasamy jeyak7@gmail.com jeyv@utdallas.edu