CSCI4140 Open-source Software Project Development


Course code CSCI4140
Course title Open-source Software Project Development
Course description This course is to introduce techniques in developing software projects. Topics include leveraging the web server, the database server, and the scripting languages, such as the LAMP (Linux, Apache, MySQL, PHP) platform, to develop software projects, advanced debugging techniques, and performance tuning techniques. Also, this course will introduce the knowledge on software licensing, such as the GNU public license (GPL) and the Berkeley Software Distribution (BSD) license. Last but not least, this course emphasizes in arousing the creativity and fun in developing software projects.
本科的主旨在於教授學生開發軟件項目的技巧。本科將教授利用網站服務器、腳本語言及數據庫服務器,,如 LAMP (Linux, Apache, MySQL, PHP) 平台,來開發軟件項目;高級的除錯技巧及效能調校技巧亦是本課程將教授的項目。同時,本科將教授軟件使用許可證的知識,如 GNU 通用許可證及 BSD 許可證。最後,本科亦著重引發學生對於軟件項目開發的創意與樂趣。
Unit(s) 3
Course level Undergraduate
Pre-requisite  CSCI2100 or 2520 or ESTR2102
Semester 1 or 2
Grading basis Graded
Grade Descriptors A/A-:  EXCELLENT – exceptionally good performance and far exceeding expectation in all or most of the course learning outcomes; demonstration of superior understanding of the subject matter, the ability to analyze problems and apply extensive knowledge, and skillful use of concepts and materials to derive proper solutions.
B+/B/B-:  GOOD – good performance in all course learning outcomes and exceeding expectation in some of them; demonstration of good understanding of the subject matter and the ability to use proper concepts and materials to solve most of the problems encountered.
C+/C/C-: FAIR – adequate performance and meeting expectation in all course learning outcomes; demonstration of adequate understanding of the subject matter and the ability to solve simple problems.
D+/D: MARGINAL – performance barely meets the expectation in the essential course learning outcomes; demonstration of partial understanding of the subject matter and the ability to solve simple problems.
F: FAILURE – performance does not meet the expectation in the essential course learning outcomes; demonstration of serious deficiencies and the need to retake the course.
Learning outcomes 1. Students will understand different system development issues, such as interprocess communication, system logging, and system security.
2. Students will learn different scripting languages such as PHP and Perl.
3. Students will learn performance tuning techniques, such as the program profiling technique, as well as advanced debugging techniques, such as the memory leakage detection.
(for reference only)
Project: 40%
Exam: 30%
Assignments: 30%
Recommended Reading List 1. Professional LAMP: Linux, Apache, MySQL and PHP Web Development. Jason Gerner, et. al. Wrox, 2005.
2. GNU/Linux Application Programming. M. Tim Jones. Charles River Media, 2005.
3. Linux Appliance Design. Bob Smith et. al. No Starch Press, 2007.
4. Linux Debugging and Performance Tuning. Steve Best. Prentice Hall, 2006.
5. Linux Routers. Tony Mancill. Prentice Hall, 2002.


CSCIN programme learning outcomes Course mapping
Upon completion of their studies, students will be able to:  
1. identify, formulate, and solve computer science problems (K/S); TP
2. design, implement, test, and evaluate a computer system, component, or algorithm to meet desired needs (K/S);
3. receive the broad education necessary to understand the impact of computer science solutions in a global and societal context (K/V); TP
4. communicate effectively (S/V);
5. succeed in research or industry related to computer science (K/S/V);
6. have solid knowledge in computer science and engineering, including programming and languages, algorithms, theory, databases, etc. (K/S);
7. integrate well into and contribute to the local society and the global community related to computer science (K/S/V); TP
8. practise high standard of professional ethics (V);
9. draw on and integrate knowledge from many related areas (K/S/V);
Remarks: K = Knowledge outcomes; S = Skills outcomes; V = Values and attitude outcomes; T = Teach; P = Practice; M = Measured