Perhaps not surprisingly, Indonesia’s software industry is having so many trouble meeting expectations. One of the most visible manifestations is the acute shortage of qualified developers. Most of professional in local industries are not skilled to construct good quality software even if they have computer science background. This bottleneck has led to rapidly escalating costs, time to market delays, trial-and-error products, and widespread internal quality problems like security, reliability, and performance. Software development has always been a challenging endeavor, and the fundamental forces that make it so remain the same until now are people and how they solve complexity.
On other side, higher IT educations in Indonesia produce around 130,000 graduates every year since 2004. A research showed that only around 1000 new developers can enter the profession each year. From these figures it’s a short hop to the conclusion that many IT graduated students are un-employed or took another career instead of being software developer (sales or non-engineering disciplines). It is not make sense for a potential market like Indonesia in which hundreds of local ISVs struggling to find good developers. In addition, IDC has projected that Indonesia needs 50,000 new developers in period of 2005-2010 to serve its local market.
There is nothing mysterious to become qualified developer !!. I am not an idealistic person, but I can say that what people need is a good education to make them skilled enough. How you can trust self-taught developers working on enterprise projects? or let say, how you can trust developer to implement what Fowler means with architecure? I believe that many people in Indonesia may have difficulties finding good source of programming information even though they have access to Internet world. One possible cause is they don’t know what they have to know. Someone must tell them “why they need to learn something, what to learn and how to learn”. Our primary dream for Algorythmus is to narrow the knowledge gap of “why, what and how stuffs” related to software construction. Algorythmus is a bridge for academic and industry. In such a way, in a long future, I hope Algorythmus becomes a knowledge based community who produces qualified developers for its partners. From now, just think and remember Algorythmus as community based software developer factory :).
Take a look what we (AK and me) have defined as draft for Algorythmus curriculum. First, we agreed with two type of courses:
- Regular (R) : Monday to Friday (09.00 - 17.00)
- Weekend (W): Saturday and Sunday (09.00 - 17.00)
I dont publish any design skill courses yet. AK will publish it soon once it is ready.
Note : 4 sessions per day. Red color is mandatory regular course and the rest are optional weekend course.
I. Algorythmus Foundation Courses
| Code | Course Title | Duration | Prerequisites | Level |
| RB00 | Becoming a Professional Pragmatic Developer | 1 | High School Mathematic | 100 |
| WB01 | Concrete Mathematic Foundation for Developer | 5 | High School Mathematic | 200 |
| RB02 | Operating System Concept and Windows Internal | 5 | RB01, RC01/RC03 | 200 |
| WB03 | Data Structure and Algorithm in C/C++ | 5 | RB01, RC01/RC03 | 300 |
| RB04 | Introduction to TCP/IP and Networking | 4 | High School Mathematic | 200 |
II. Algorythmus Hacking Courses
| Code | Course Title | Duration | Prerequisites | Level |
| RMASM01 | Computer Architecture and Basic Assembly Language | 8 | RB01, RB02 | 300 |
| WMASM02 | Windows Kernel Debugging (W2K3, XP, and Vista) | 3 | RB02, RMASM01 | 200 |
| WMASM03 | Disassembling and Reverse Engineering | 4 | RB02, RMASM01 | 200 |
| RMASM04 | Compiler Theory and Code Optimization | 5 | RB02, RMASM01, RC01/RC03 | 300 |
| WMASM05 | Exploiting Software and Creating Rootkits | 3 | RB02, RMASM01, RC01/RC03 | 200 |
| WMASM06 | Mastering MASM for Intel Based Computer | 8 | RMASM01 | 300 |
III. Algorythmus C/C++ Courses
| Code | Course Title | Duration | Prerequisites | Level |
| RC01 | Mastering ANSI C and Basic Windows System Call | 8 | RB02 | 200 |
| RC02 | Mastering C++ Programming Language | 8 | RC01 | 200 |
| RC03 | Object Oriented Programming with C++ | 4 | RC02 | 200 |
| RC04 | C++ Template Programming | 4 | RC03 | 300 |
| RC05 | Mastering COM for C++ Developer | 8 | RC04 | 300 |
| WC06 | Mastering Multicore Programming with C/C++ | 5 | RC01/RC03 | 200 |
| WC07 | Programming C++ with STL | 8 | RC04 | 300 |
| WC08 | Programming C++ with Boost Library | 8 | RC04 | 300 |
| WC09 | Secure Coding in C/C++ | 4 | RC01, RC03 | 300 |
| WC10 | Debugging C/C++ Windows Application | 5 | RC01, RC03 | 300 |
| WC11 | Developing Components with Windows API | 8 | RB02, RC01, RC03 | 300 |
| WC12 | Multithreaded Programming with C/C++ and Windows API | 5 | RB02, RC01, RC03 | 300 |
| WC13 | Network Programming with C++ and Windows Socket | 5 | RB02, RC01, RC03 | 300 |
| WC14 | Programming Desktop Application with MFC | 8 | RB02, RC05 | 200 |
| WC15 | Advanced Windows System Programming with C/C++ | 8 | RB02, RC04 | 300 |
| WC16 | Memory as Programming Concept in C/C++ | 4 | RB02, RC01/RC03 | 300 |
| WC17 | Mastering ATL Server Programming with C++ | 8 | RC05 | 300 |
IV. Algorythmus .NET Courses
| Code | Course Title | Duration | Prerequisites | Level |
| RCS01 | Beginning CLI and CLR with C# | 5 | RB02, RC01/RC05 | 200 |
| RCS02 | Mastering C# Programming Language | 5 | RB02, RC01/RC05 | 200 |
| RCS03 | Object Oriented Programming with C# | 5 | RCS01, RCS02 | 200 |
| RCS04 | Essential of C# 2.0 Generic and Transaction | 5 | RCS03 | 200 |
| RCS05 | Advanced IL Assemblies and CLI | 3 | RCS03 | 300 |
| RCS06 | Programming with CLR Shared API | 3 | RCS01, RB02, RC01/RC05 | 300 |
| RCS07 | CLR Security and Securing .NET Assemblies | 3 | RCS01, RCS02 | 200 |
| RCS08 | Debugging .NET Application | 5 | RCS04 | 300 |
| WCS09 | Mastering .NET Compact Framework 2.0 | 5 | RCS04 | 200 |
| WCS10 | Mastering ASP.NET 2.0 HTPP Processing Framework | 5 | RCS04 | 200 |
| WCS11 | Advanced ASP.NET 2.0 Programming | 5 | RCS04 | 300 |
| WCS12 | ASP.NET AJAX Deep Dive | 4 | RCS04 | 200 |
| WCS13 | Mastering Windows Forms 2.0 | 5 | RCS03 | 200 |
| WCS14 | Advanced Windows Forms 2.0 Programming | 5 | RCS04 | 300 |
| WCS15 | Mastering Data Access with ADO.NET 2.0 | 3 | RCS04 | 200 |
| WCS16 | Mastering .NET Web Services and WSE 3.0 | 5 | RCS04 | 300 |
| WCS17 | Mastering Network Programming with C# | 5 | RCS03 | 300 |
| WCS18 | Mastering Multithreaded Programming with C# | 5 | RCS03 | 300 |
| WCS19 | Mastering COM and .NET Interoperability | 5 | RCS03 | 300 |
| WCS20 | Mastering Windows Presentation Foundation via C# | 8 | RCS03 | 300 |
| WCS21 | Mastering Windows Presentation Foundation via XAML | 8 | RCS03 | 300 |
| WCS22 | Mastering Windows Communication Foundation via C# | 8 | RCS04 | 300 |
| WCS23 | Mastering Windows Workflow via C# | 8 | RCS04 | 300 |
Special notes:
Anyone can choose to be a lecturer or student at certain costs. Being a lecturer doesnt mean to know everything or smarter than students. For Algorythmus, being a lecturer means you have strong passion in exploring specific technology. Investing time and energy to learn more than students. Willing to share your knowledge by teaching and writing books. Until now, we dont know who are lecturers and students. Our focus is to define "why" and "what" first.
AK has a very good input around Algorythmus Foundation Publishing to publish our own books. I always welcome to any comments and ideas to make this dream really happen.
Ciao - R.A.M