drawbacks of web application?
Unfortunately yes :(...
Some of the drawbacks are...
1. Your web application is
generally slower Why is this so?
You will not likely write a heavy duty image processing software (if processing on powerful server, then OK, but not on weak client) or 3D game on a web-browser... (some exception exists though, but not easy). At the moment, the computer network speed throughout the world is not equally fast. In my home country (Indonesia), I experience 'difficulties' on this matter compared to Singapore...
To be checked soon: app.cache
2. The offline
counterparts* are still stronger :O
e.g. The functionalities of
Google Slides or this reveal.js are still limited compared to the more established Microsoft PowerPoint
3. Web-apps are more prone to various security attacks
DoS, SQL injection, Clickjacking, stolen passwords,
you name it...
DoS = Denial of Service
Stolen passwords/session hijacking (virtual identity theft)
4. Harder to guard intellectual property
It is (very)
easy* to look at the "source code"
of the (client-side) web applications
For example, if you want to know how to do this kind of web-based presentation (and replicate it), simply right click this page and click 'View page source'
5. Some tasks become harder
For example, currently a web application (e.g.
a web-based image editing software) is not allowed to directly access the host's file system for security reasons
Therefore, the user has to explicitly upload their file(s) to the web server to allow the file(s) to be accessible by the web application
By making your data available "in the cloud", we can actually generate a privacy issue if the web application does not do proper data handling...
web programming easy?
There are some challenges...
1. Too many things to learn...
Other than the current standards of HTML5, CSS3, JS, and a few more, there are many other web technologies out there, each with their own strengths and weaknesses, and this number increases daily, especially the rate of 'new frameworks' appearing here and there...
PS: And once someone is 'imprinted' towards a certain framework (a certain technology stack), it will be super hard to try other framework (technology stack)...
2. It is a moving target...
What is "new" today (e.g. HTML5, CSS3, jQuery 3.1.1, Bootstrap 3.3.7, Laravel 5.3) may be outdated
as soon* as this course is over...
We need the ability to learn, relearn, unlearn...
3. More things to be considered...
Compared to offline apps, we have to also consider:
Scalability (one versus many users)
Various web security issues
Registering proper domain names
Cross/old browser compatibility
Web application can be harder to develop as now the developer has to think about more stuffs...
UI/UX, because our workspace is restricted "inside the browser window" and we do not even know our user's screen size/resolution, this will be revisited in
4. Hard to master...
Can your web app generates the intended traffic?
Even though one can claim to know various web programming techniques, not many can claim that their web applications generates the intended web traffic
Via MPE or via CORS
for any :O NUS students who have passed CS1020
Quota: 60 students
It was 57 and 57 in the last two years...
Most likely it is 50 in Sem2 2016/2017
The class quota for Sem2 AY2015/16 is set to 60 students (15 students per lab group), same as the last two AYs
Usually more than half of the seats are allocated via MPE (late December of previous years) and heavy bidding war via CORS afterwards...
Lectures: Every Tuesday, 10am-12pm @ VCRm
There is no tutorial session
Lab session: Every Monday, 10am-12pm, 12-2pm, 2-4pm, or
4-6pm @ COM1-B111
CS3226 Lesson Plan
There are only 11 weeks with planned lecture sessions (no webcast). One lecture session is for theoretical test. One last lecture session is for Capstone project preview day.
There are 6+5 planned lab sessions to reinforce the web programming concepts covered during lecture. The first 6 labs have inter-connected mini theme that should expose students to at least one cycle of web programming project. The last 5 labs will be to help students complete their capstone project. One lab session (lab2) will be lightweight due to CNY.
CS3226 Capstone Project section
The idea is to reserve the last 5 weeks of this course for students to do one medium-sized web programming project in a team setting of 5-6 students with mixed strengths
The capstone projects of CS3226 will be presented to public on the 10th
STePS on Wednesday, 12 April 2017 (Week 13)
The project runs in approximately 1 month. This is somewhat similar to the spirit of CS3216 module but on smaller scale.
The team members hopefully have diverse backgrounds; min # of students/team is 5 students/team; max # of students/team is 6 students/team
There is no specific textbook for this course,
But you can check these NUS Libraries (or NLB) books:
Dynamic Web Programming and HTML5,
Paul S. Wang
Programming the World Wide Web (8th ed),
Robert W. Sebesta
Internet and world wide web : how to program,
Paul Deitel, Harvey Deitel, Abbey Deitel
Maybe PHP and/or MySQL textbooks
Paul Wang's book: A 2012-13 book, quite new (for 2015 batch) and already has HTML5 and CSS3 inside
Sebesta's new book: A 2015 book
Deitel's book: A 2011-2012 book, already has HTML5 and CSS3
Note that any book written
before year 2011-2012 probably does not include HTML5/CSS3. But even the newest (printed) book will not be able to keep pace with the ever-changing web technologies :O.
Printing this Lecture Note
You don't have to print these lecture notes (now) as I may update some (minor) parts of it on the spot... :O
But if you are an old-school type, see
reveal.js documentation for an easy way to print this lecture note :)
It is best to wait until Theoretical Test on Week11
(open book) before you print these notes
The weightage of various course assessments:
Capstone project (team): 41%
(using updated "Google PageRank" algorithm), Theoretical Test: 30%
(written, individual, test everything, Week11), Lab small deliverables: 6x4 = 24%
(online, subgroups of 2-3 students per lab group), Lab TA subjective score (individual): 5%
(integer 0-missing, 1/2-silent, 3-the average, or 4/5-active)
Still Not for this semester :O...
NOT learned these yet (as of early January 2017):
Vanilla JS and jQuery, e.g. Node.js, AngularJS, etc... Various outdated technologies, e.g. Flash, etc...
Various Server-side technologies other than PHP, e.g. Node.js, ASP(.NET), JSP, Python, Ruby, etc...
Various Database Management systems other than MySQL, e.g. PostgreSQL, NoSQL like MongoDB, etc...
Various Web frameworks other than Bootstrap and Laravel, e.g. Ruby on Rails, Django, CodeIgniter, etc...
Various Website templates: Wordpress, Joomla, Wix, etc...
For next AYs, this list should change again as web technologies are evolving and my knowledge are improving
Mostly LAMP stack, not yet MEAN stack