FOSS Elective-I Syllabus

[for Anna University B.E.(CSE), B.Tech. (IT) MCA]

1. Unit -- 1 (9 hrs) Overview of Free/Open Source Software-- Definition of FOSS & GNU, History of GNU/Linux and the Free Software Movement , Advantages of Free Software and GNU/Linux, FOSS usage , trends and potential, global and Indian. GNU/Linux OS installation-- detect hardware, configure disk partitions & file systems and install a GNU/Linux distribution ; Basic shell commands - logging in, listing files, editing files, copying/moving files, viewing file contents, changing file modes and permissions, process management ; User and group management, file ownerships and permissions, PAM authentication ; Introduction to common system configuration files & log files ; Configuring networking, basics of TCP/IP networking and routing, connecting to the Internet (through dialup, DSL, Ethernet, leased line).

2. Unit -- 2 (9 hrs) Configuring additional hardware - sound cards, displays & display cards, network cards, modems, USB drives, CD writers ; Understanding the OS boot up process ; Performing every day tasks using gnu/Linux -- accessing the Internet, playing music, editing documents and spreadsheets, sending and receiving email, copy files from disks and over the network, playing games, writing CDs ; X Window system configuration and utilities-- configure X windows, detect display devices ; Installing software - from source code as well as using binary packages.

Setting up email servers-- using postfix ( SMTP services), courier ( IMAP & POP3 services), squirrel mail ( web mail services) ; Setting up web servers -- using apache ( HTTP services), php (server-side scripting), perl ( CGI support) ; Setting up file services -- using samba ( file and authentication services for windows networks), using NFS ( file services for gnu/Linux / Unix networks) ; Setting up proxy services -- using squid ( http / ftp / https proxy services) ; Setting up printer services - using CUPS (print spooler), foomatic (printer database)

3. Unit -- 3 (9 hrs) Setting up a firewall - Using netfilter and ip tables; Using the GNU Compiler Collection --GNU compiler tools ; the C preprocessor (cpp), the C compiler (gcc) and the C++ compiler (g++), assembler (gas) ; Understanding build systems -- constructing make files and using make, using autoconf and autogen to automatically generate make files tailored for different development environments ; Using source code versioning and management tools -- using CVS to manage source code revisions, patch & diff.

4. Unit -- 4 (9 hrs) Understanding the GNU Libc libraries and linker -- linking against object archives (.a libraries) and dynamic shared object libraries (.so libraries), generating statically linked binaries and libraries, generating dynamically linked libraries ; Using the GNU debugging tools -- gdb to debug programs, graphical debuggers like ddd, memory debugging / profiling libraries mpatrol and valgrind ; Review of common programming practicies and guidelines for GNU/Linux and FOSS ; Introduction to Bash, sed & awk scripting. Basics of the X Windows server architecture.

5. Unit -- 5 (9 hrs) Qt Programming ; Gtk+ Programming ; Python Programming ; Programming GUI applications with localisation support.

COMMENTS

6. Unit -- 6 [proposed] FreeBSD Kernel Internals -- Kernel Overview (Kernel terminology, Basic kernel services) ; Process Management (Process Scheduling, Jails, Scheduling, SIgnals, Virtual Memory Management) ; Kernel I/O Structure (Special files, Terminal Handling, Multiplexing I/O) ; Device Management (Autoconfiguration Management, Configuration of a device driver) ; File System Overview (Filesystem Services, Block I/O System, Filesystem Implementation, Soft Updates and Snapshots) ; Multiple Filesystem Support (Support for Multiple Filesystem, Volume Management, Network Filesystem) ; Interprocess Communication (Concepts and Terminology, Basic IPC Services, Examples of IPC and Network Facilities) ; Networking Implementation (System Layer and Interfaces, Routing Issues, Internet Protocols(TCP/IP)) ; System Tuning (Performance Measurement, System Tuning, Crash Dump Analysis, Security Issues)

FloydNMilan

REFERENCES

Text Book : 1. Introduction to Linux: Installation and Programming N. B. Venkateshwarlu (Ed); B S Publishers; 2005. (An NRCFOSS Publication)

Reference Books : 2. Running Linux, Fifth Edition, Matt Welsh, Matthias Kalle Dalheimer O'Reilly Publishers, December 2005, ISBN: 0-596-00760-4. http://www.oreilly.com/catalog/runlinux5/index.html

3. Linux Cookbook, First Edition, Carla Schroder, O'Reilly Cookbooks Series, November 2004, ISBN: 0-596-00640-3.

4. Free Software, Free Society: Selected Essays of Richard M. Stallman, First Edition, Joshua Gay (Editor), GNUPress, October 2002, ISBN: 1-882114-98-1. (Downloadable version: http://www.gnupress.org/philosophy/fsfs/rms-essays.pdf)

5. Learning the bash Shell, 3rd Edition, O'Reilly, 2005. URL: http://www.oreilly.com/catalog/bash3/index.html Note: This book is very well written. It deals with shell scripting as a natural part of the learning the shell. I'd recommend this over the ABS Guide.

On-line materials 1. Open Sources: Voices from the Open Source Revolution, First Edition, January 1999, ISBN: 1-56592-582-3. URL: http://www.oreilly.com/catalog/opensources/book/toc.html

2. The Linux Cookbook: Tips and Techniques for Everyday Use, First Edition, Michael Stutz, 2001. URL: http://dsl.org/cookbook/cookbook_toc.html

3. The Linux System Administrators' Guide, Lars Wirzenius, Joanna Oja, Stephen Stafford, and Alex Weeks, December 2003. URL: http://www.tldp.org/guides.html

4. Using GCC, Richard Stallman et al. URL: http://www.gnu.org/doc/using.html

5. An Introduction to GCC, Brian Gough. URL: http://www.network-theory.co.uk/docs/gccintro/

6. GNU Autoconf, Automake and Libtool, Gary V. Vaughan, Ben Elliston, Tom Tromey and Ian Lance Taylor. URL: http://sources.redhat.com/autobook/

7. Open Source Development with CVS, Third Edition, Karl Fogel and Moshe Bar. URL: http://cvsbook.red-bean.com/

8. Advanced Bash Scripting Guide, Mendel Cooper, June 2005. URL: http://www.tldp.org/guides.html

9. GTK+/GNOME Application Development, Havoc Pennington. URL: http://developer.gnome.org/doc/GGAD/

10. Python Tutorial, Guido van Rossum, Fred L. Drake, Jr., Editor. URL: http://www.python.org/doc/current/tut/tut.html

11. FreeBSD Handbook URL: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/

FOSS Elective – I Question Bank Part A Questions

Unit I

1.What is Free Open Source Software (FOSS)?

2.What are the standard file descriptors?. Which are available for all programs?

3.What is setuid?. Explain?

4.Name four boot loader programs.

5.Why disk partitions are needed?

Unit II

1.Write a perl program to reverse a given string.

2.What are content addressable arrays?

3.Mention about configuration files used in bash when a user is logged.

4.What are the configuration files related to X windows configuration.

5.How make our server to deny telnet connection by users of a specific machine.

Unit III

1.What is packet filtering fire wall?

2.Why do we need make files?

3.Explain about SW patching.

4.Why do we need to generate assembly code from a C program?

5.What do you understand by toolchain?

Unit IV

1.Explain about static and dynamic linking?

2.What are the break points?. Why we need them?

3.Write a simple C program which gives SIGSEGV error.

4.Where do you find libraries in Linux directory tree?. If you remove all of them, does the system boots next time?.

5.Explain about PATH environment variable. Why do we get the error message “bash$ command not found”.

Unit V

1.What is the difference between signals, interrupts and event driven toolkits works?

2.What is Xlib?. How do you link your C program with Xlib?.

3.What are the different X servers available with Linux?.

4.What are call back functions?. How they differ from signal handlers?

5.What is meant by canvas?

FOSS Elective – I Question Bank Part B Questions

Unit I

1.Explain about different types of HD’s which Linux supports along with their notations like A drive in Windows jargon. Also, what happens if you partition them. Mention how many of the HD’s a PC supports for each type of the HD.

2.What is the security mechanism available in the Unix?. Compare the same with Windows 95/98. Which commands can be used to change permissions of a file/directory?. What is the implication of umask?

3.a)Explain about TCP/IP networking in terms of IP address, network address, port address, and NIC address. b) Write about PAM authentication?. How does it differs from normal chmod?

Unit II

1.Write a perl program which reads a set of integers and calculates some of those integers which are primes. Write a function which takes a integer checks whether it is prime or not. Use this in the main program.

2.Write about authentication in general. How do you implement the same using Apache for your web site?

3.Write about how we can troubleshoot X windows configuration. What are the configuration files used by X server?.

What to do you understand by horizontal and vertical frequency?

Unit III

1.Explain about GNU tool chain in detail. What are the different stages involved in gcc.

2.Explain various ways SW development from multiple C source files. Use simple live examples and explain in a step by step fashion.

3.a) Why do we need code versioning?. How do we implement the same in Linux?. b) What do you understand by binary and source distributions?. When do you need SW patching?. Can we apply SW patching on binary releases?

Unit IV

1.How can we generate a static library?. Explain with simple step by step example. What steps we have to do if we wanted to have dynamic library from the same sources?

2.a) Write a shell program which checks the current working directory for a specified file and prompts the user whether to delete it or not. Based on his response the file should be deleted. b) Write an awk program to list users names and terminal names who are working for more than an hour.

3.a) What are the different ways of joining Linux commands?. b) What do you understand by piping?. What is the use of alias command?.

Unit V

1.Write a perl program which reads a set of integers and calculates some of those integers which are primes. Write a function which takes a integer checks whether it is prime or not. Use this in the main program.

2.a) Explain about X windows architecture.

b) Write a simple Xlib program which displays a message “Hello Welcome My Dear”.

3. Write a simple GTK based program which displays a message “Hello Welcome My Dear”.

FOSS Elective II Syllabus

Course title : Enterprise Application development using FOSS

for Anna University B.E. (Computer Science Engineering), B.Tech. (Information Technology) and Master of Computer Applications (MCA)

Objective: The user will become proficient in Software Development processes, Databases, Middleware components to be productive in a software development environment that uses OSS components. Improved ability to review OSS code

Total: 45 hours Pre requisite: FOSS Elective -- I OR Familiarity with its contents.

Unit -- 1: Open Standards for Enterprise Applications (9 hrs.) Application examples from Banking and e-Governance, Enterprise level requirements, Layered Architecture applications, Open Standards, Royalties, FOSS Licensing & Business models

Unit -- 2: FOSS Development Methodology & Tools (9 hrs.) Collaborative Software Development : FOSS Community structure & dynamics, Mailing lists, chat, wiki, messaging, Integrated Development Environments, Version Control (tagging, branching, merging), Issue tracking (bugs, new features), Documentation. [Recommended tools: Eclipse, Subversion, Trac/Scarab, Mediawiki, LaTeX]

Unit -- 3: Presentation Layer (9 hrs.) Client Environment : Browsers (extensions, cookies, applets), Hand-held devices, Thin clients, Web page design & Client-side scripting (XHTML, WML, AJAX, CSS, XSL). [Recommended tools : Firefox, Nvu, OpenOffice?.org web module]

Unit -- 4: Datastore Layer (9 hrs.) Data modeling refresher : RDBMS fundamentals, Dublicore, Database Administration : Access control, Security; Disaster recovers (Backups, Replication). [Recommended tools: PostgreSQL, PgAdmin?]

Unit -- 5: Business Logic Layer (9 hrs.) Model View Controller (MVC) Framework, Server-side programming (CGI, page tempaltes), Data access, database connectivity , Report generation. [Recommended tools: PHP, Apache, adodb, php-pdf]

REFERENCES

Text Book: 1. Enterprise Application Development using FOSS'

-- (under publication)

On-Line Materials:

1. Dublin Core Metadata (http://dublincore.org/ and http://purl.oclc.org/dc/)

2. PostgreSQL Reference Document (http://www.postgresql.org/docs/)

3. Simple PostgreSQL Tutorial (http://yolinux.com/TUTORIALS/LinuxTutorialPostgreSQL.html)

4. PostgreSQL Client Programming Tutorial (http://www.csee.umbc.edu/help/linux_sql/programmer.ps)

5. SQL Tutorial (http://www.1keydata.com/sql/sql.html)

6. PgFoundry?: PostgreSQL related softwares (http://pgfoundry.org/)

7. Book: Practical PostgreSQL (O'Reilly) http://www.commandprompt.com/ppbook/

8. Book: PostgreSQL: Introduction and Concepts (http://www.postgresql.org/docs/books/awbook.html)

9. PgAdmin?: PostgreSQL Admin Tool (http://www.pgadmin.org/)

10. PostgreSQL related Articles, Guides and Presentations (http://www.postgresql.org/docs/techdocs.0)

11. The Cathedral and The Bazaar by ESR (http://www.catb.org/~esr/writings/cathedral-bazaar/)

12. AutoConf? and AutoMake? and LibTool? (http://sourceware.org/autobook/autobook/autobook_toc.html and http://www.openismus.com/documents/linux/automake/automake.shtml)

13. Learn GNU Dev Tools (http://www.st-andrews.ac.uk/~iam/docs/tutorial.html#SEC63)

14. Make (http://www.elitecoders.de/mags/cscene/CS2/CS2-10.html)

15. Wiki Comparision (http://wiki.splitbrain.org/wiki:compare and http://www.wikimatrix.org/index.php)

16. Blog and Wiki usage in Education (http://webquest.sdsu.edu/necc2004/blogs-and-wikis.htm)

17. Wiki Softwares List (http://en.wikipedia.org/wiki/List_of_wiki_software)

18. Data Connectivity and Access Tool (http://java.sun.com/products/jdbc/ and http://jakarta.apache.org/commons/dbcp/)

19. MVC based Tool (http://jakarta.apache.org/struts and http://www.turbogears.org/)

20. Report Generation Tool (http://jasperreports.sourceforge.net/)

21. FireFox? (http://www.mozilla.com/firefox/)

22. Nvu - Open Source Web Authoring System (http://www.nvu.com/)

23. OpenOffice? (http://www.openoffice.org/)

24. Eclipse (http://www.eclipse.org/)

25. SubVersion? (http://subversion.tigris.org/ and http://svnbook.red-bean.com/)

26. LaTeX - Document Preparation System (http://www.latex-project.org/)