Latest trends in Global Software Industry Dr. Jeyakesavan Veerasamy
Agenda Introduce myself Software: Then & Now SW development environment options SW Efficiency – does it matter? Latest buzz Trends in CS education Open Q&A
Dr. V. Jeyakesavan: Academia, Industry & Personal Dad was a school teacher B.E. (ECE) in CEG Guindy, Anna University – UNIX System Software Engineer, HCL Limited, Chennai, MS Computer Science, University of Texas at Dallas (UTD),
Dr. V. Jeyakesavan: Academia, Industry & Personal … Telecom Software Engineer, Northern Telecom, Dallas, Ph.D. Computer Science (part-time), University of Texas at Dallas (UTD), Technical Lead, Samsung Telecom, Got married in 1998 Adjunct Faculty, UTD CS department, Online Adjunct Faculty in several online universities from 2000
Dr. V. Jeyakesavan: Academia, Industry & Personal … Adjunct Faculty, Southern Methodist University, 2010 Sr. Lecturer (full-time), UTD Computer Science, 2010-present 2 daughters: Nila (8) and Chinmayee (4) Passionate about teaching – happy to share ideas to improve teaching quality in colleges
Dr. V. Jeyakesavan: Summary 18 years experience as Software Engineer 12 years of teaching experience
Fun way to learn programming & OOP Alice, a visual programming language Download from Whole world can be characterized by OOP How many meaningful objects in this room? What is a class? Alice program demo Great stepping stone to serious programming Share it with your friends & family
Software: Then & Now Note: Almost all the content is based on observations & 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 process
Agile methods Limited documentation Better tracking of current status Frequent releases Continuous interaction with the customer Several refinements: PP, SCRUM, …
A typical industry project in 1990 C standard library Home-grown library New code
Same industry project NOW C++/Java standard library Home-grown library Open source components Commercial libraries for industry segment IDE modules New code Follow-up Q: Any disadvantages?
Questions Expert programmer: what does it mean? Future projects: No code? Just integration? Knowledge of Java/C++/… down the drain?
Application Specific Programming M1M2M3 Intrepreter Mn script … …
Example: Casio FX100 calculator in PC LanguageSource CodeExecutable Size Assembly language ~40,000 ~10 Kbytes C/C++~4000~50 Kbytes Visual Basic< 1000~250 Kbytes
Cloud Computing SW bundles inefficient for small companies Too much IT equipment & staff overhead Cloud resource provider provides the SW over the web and stores data too – SaaS model Each client needs only web browser and internet access.
Analogy: making food Make Sambar from scratch Make Sambar using powder Make Maggie Noodles Microwave frozen sambar / Tetrapack Inefficient for singles – make food in one place & get it delivered?
Data Exchange A1 A3 A2 A4
Data Exchange Binary or text data XML or JSON … Independent data checkers tools available. A1 A3 A2 A4
Software Outsourcing Goal: reduce cost Projects need to fit certain criteria – Bit formal & clear requirements – Interfaces well defined/understood – should be of reasonable size Not a good idea for small/poorly defined/time- critical/security-sensitive projects Opinion: may stay at current level or go down Industry not conducive for more outsourcing With increased cost, Indian SW companies under pressure
Design decisons Purchase modules or use open-source?.NET or Java?
Running time of a program? size of input (n) CPU speed memory size & speed actual processing, time complexity of algorithm compiler optimization, dev execution environment …
Compare these algorithms AlgorithmO(log n)O(n)O(n 2 )O(2 n ) When n goes up by 1 When n doubles
Time complexity – our goal
Running time improvements If a program takes 1 week to complete, how will you approach to reduce running time?
Software efficiency: Do we really care? Goal is to make software work & meet deadline for most industry projects. Let us consider a few examples: Game console: Algorithm takes longer to run requires higher-end CPU to keep realism higher price product fails amid competition
Software Efficiency: Web server Consider 2 algorithms A1 and A2 that take 5 seconds & 20 seconds per transaction. web-user experience? web server capacity? A1A2 User1User2 Internet
Daily data crunching: What if it takes >1 day? initial setup loop – read one tuple – open db connection – send request to db – get response from db – close db post-processing Equation for running time = c 1. n + d 1 Time complexity is O(n)
Data crunching pseudocode initial setup open db connection loop – read one tuple – send request to db – get response from db close db post-processing Equation for running time = c 2. n + d 2 Time complexity is still O(n), but the constants are different. c 2 < c 1 d 2 > d 1
Wireless node capacity BHCA capacity: 10 lakhs calls per hour Each call requires (1 hour * 70%/(10 lakhs)) = 2.5 milliseconds. If that 2.5 msec becomes 3.0 msec due to additional processing, new capacity will be 10 * 2.5 = x * 3.0 x = 8.3 lakhs BHCA 17% capacity reduction
Data download & processing open web browser loop click & download next file process file done! Let us say both steps take 5 minutes each & we have 10 files to process. What is the total processing time? How can we optimize? Hint: download uses I/O and processing uses CPU.
Data download & processing open web browser loop click & download next file process file until all files are processed Let us say both steps take 5 minutes each & we have 10 files to process. What is the total processing time? > 10 * 10 = 100 minutes How can we optimize? Hint: download uses I/O and processing uses CPU. Real-world example? Making chappathis?
Data download & processing open web browser click & download next file loop click & start to download next file process previous file until all files are processed Download & processing in parallel. What is the total processing time now? > 5 * 10 = 50 minutes More complex algorithm
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
Smart-phone development My kids know/play games in Android phone For me, , 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
Dallas-Ft. Worth metroplex
Advertisement: University of Texas at Dallas Erik Jonsson School of Engineering and Computer Science Computer Science: ~500 MS students and ~150 PhD students Surrounded by 100s of companies in Dallas- Fort Worth metroplex Students can get internships right after 2 semesters and continue studies in parallel Flyers available – see me after the lecture
Questions & Answers
Thanks for attending! Dr. Jeyakesavan Veerasamy