Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Open Source Programming

( Value Added Course)

Course Title: Open Source Programming Fundamentals

Prerequisites:

Basic understanding of programming concepts

Proficiency in at least one programming language

Familiarity with version control systems (e.g., Git)

Objectives:

1. Understand the principles and philosophy of open source development.


2. Gain practical experience in contributing to open source projects.
3. Develop proficiency in using version control systems for collaborative coding.
4. Learn to navigate and contribute to open source communities effectively.

About Open Source Programming:

Open source programming is a development approach that involves making the


source code of a software project freely available to the public. This allows anyone to view,
use, modify, and distribute the code. The open source model promotes collaboration,
transparency, and community-driven development. Here are some key aspects of open source
programming:

Topics to be Covered ( 30 Hours)

Introduction to Open Source: (3 Hours)

Definition and philosophy of open source

History and evolution of the open source movement

Importance of community and collaboration

Getting Started with Git: (3 Hours)

Basics of version control

Setting up Git and GitHub accounts

Cloning repositories and creating branches

Contribution Workflow: (3 Hours)

Forking and cloning repositories

Creating feature branches

Making changes and submitting pull requests

Community Engagement(3 Hours)

Communication tools (e.g., mailing lists, forums, chat)


Understanding project documentation

Interacting with maintainers and contributors

Issue Tracking and Bug Reports( 4 Hours)

Using issue trackers (e.g., GitHub Issues)

Writing effective bug reports

Triaging and resolving issues

Licensing and Legal Considerations(4hours)

Understanding open source licenses

Legal implications of contributing to open source projects

Collaborative Development Practices:( 4 hours)

Code reviews and feedback

Continuous integration and automated testing

Coding standards and style guides.

Course outcomes:

1. Analyze the historical context and evolution of open source software to appreciate
its impact on the tech industry.
2. Demonstrate the ability to identify suitable open source projects for contribution
based on personal interests and skill sets.
3. Master the essential concepts of version control, including branching, merging,
and resolving conflicts.

Online Courses:

GitHub Learning Lab (https://lab.github.com/)

Coursera's "How to Use Git and GitHub" course

Documentation:

GitHub Guides (https://guides.github.com/)

Open Source Guides (https://opensource.guide/)

Websites and Blogs:

Open Source Initiative (https://opensource.org/)

Opensource.com (https://opensource.com/)

Real-world Project Contributions:

Students will be encouraged to contribute to real open source projects throughout the
course.
Assessment:

Participation in open source projects (e.g., contributions to GitHub repositories)

Regular quizzes and assignments

Total Duration: 30 hours

24 hours of lectures and hands-on labs.

6 hours for quizzes, assignments, and exams.


Unix System Administration

(Value Added Course)

Course Title: Unix System Administration

Prerequisite:

Basic understanding of operating systems and computer architecture.

Familiarity with command-line interfaces.

Course Objectives:

Understand Unix/Linux Fundamentals:

Overview of Unix history and philosophy.

File system hierarchy and navigation.

About Unix System Administration:

Unix system administration involves the management, configuration, and


maintenance of Unix-based operating systems. Unix-like operating systems, including Linux,
are widely used in server environments, embedded systems, and various computing
platforms. Here are key aspects and responsibilities associated with Unix system
administration:.

Topics to be covered:

Introduction to Open Source (2 hours)

Definition and philosophy of open source.

Historical background and key milestones.

Comparison with proprietary software.

Open Source Licenses: (2 hours)

Overview of popular open source licenses (e.g., MIT, GPL, Apache).

Understanding licensing terms and implications.

Choosing an appropriate license for a project.

Version Control Systems (VCS): (2 hours)

Introduction to Git and other version control systems.

Basic Git commands and workflows.

Branching, merging, and resolving conflicts.

Collaborative Development: (2 hours)

GitHub, GitLab, and Bitbucket: Overview and comparison.

Forking, cloning, and contributing to repositories.

Pull requests and code reviews.


Building and Packaging: (2 hours)

Compilation and build tools (e.g., Make, CMake).

Dependency management (e.g., npm, pip, Maven).

Creating distributable packages.

Continuous Integration and Continuous Deployment (CI/CD): (2 hours)

Setting up CI/CD pipelines.

Automated testing and deployment.

Integration with version control systems.

Issue Tracking and Project Management: (2 hours)

Bug tracking systems (e.g., Jira, GitHub Issues).

Agile methodologies and project management tools.

Roadmaps and release planning.

Open Source Communities: (2 hours)

Understanding community dynamics.

Code of conduct and community guidelines.

Building and sustaining a healthy community.

Security in Open Source: (2 hours)

Best practices for securing open source projects.

Handling security vulnerabilities and patches.

Code reviews for security.

Licensing and Compliance: (2 hours)

Ensuring compliance with open source licenses.

Dealing with dual licensing.

Legal considerations for open source projects.

Case Studies and Guest Lectures ( 1 hour)

Analyzing successful open source projects.

Inviting guest speakers from prominent open source communities.

Open Source Project Contributions: ( 1 hour)

Encouraging students to contribute to real-world open source projects.

Guiding through the process of submitting pull requests.


Ethical Considerations: (1 Hours)

Addressing ethical aspects of open source development.

Balancing community needs and individual contributions.

Future Trends in Open Source: (1 hours)

Exploring emerging technologies and trends.

The role of open source in emerging fields (e.g., machine learning, blockchain).

Course outcomes:

1. Analyze the impact of Unix on modern operating systems and software development.
2. Develop proficiency in using essential command-line utilities for file and directory
operations.
3. Diagnose and resolve common file system-related issues using Unix commands.

Learning Resources and References:

Books:

"UNIX and Linux System Administration Handbook" by Evi Nemeth, Garth Snyder,
Trent R. Hein, and Ben Whaley.

"Linux Pocket Guide" by Daniel J. Barrett.

Online Documentation:

Official documentation for the specific Unix distribution used in the course (e.g.,
Ubuntu, CentOS).

Interactive Labs:

Online platforms providing virtual Unix environments for hands-on practice.

Assessments:

Quizzes and Assignments:

Weekly quizzes on theoretical concepts.

Assignments involving practical tasks.

Midterm Exam:

Comprehensive exam covering topics from the first half of the course.

Final Project:

Implementing a small Unix system with specified requirements.

Total Duration: 30 hours

24 hours of lectures and hands-on labs.

6 hours for quizzes, assignments, and exam


Software Testing Tools

(Value Added Course)

Course Title: Software Testing Tools

Prerequisite:

Basic understanding of software development life cycle (SDLC).

Familiarity with manual testing concepts.

Basic knowledge of programming and scripting languages (preferably).

Course Objectives:

Develop a solid understanding of software testing tools and their role in the software
development life cycle.

Gain hands-on proficiency in using popular testing tools for automated testing,
covering functional, performance, and security testing.

Learn how to integrate testing tools into the development process, including
continuous integration environments.

Acquire the skills to generate meaningful test reports, analyze results, and
communicate testing progress to stakeholders.

Topics to be covered:

Introduction to Software Testing Tools (2 hours):

Overview of software testing and its importance.

Role of testing tools in the software development life cycle.

Categories of testing tools.

Setting Up Testing Environments (2 hours):

Installation and configuration of testing tools.

Integration with development and build environments.

Handling dependencies and system requirements.

Automated Test Scripting (4 hours):

Basics of scripting languages (e.g., Selenium WebDriver with Java/Python, JUnit.

Writing and executing basic test scripts.

Debugging and troubleshooting automated scripts.

Functional Testing Tools (6 hours):

In-depth coverage of a selected functional testing tool (e.g., Selenium).

Creating and executing functional test cases.

Handling dynamic web elements and different browsers.


Performance Testing Tools (4 hours):

Introduction to tools such as JMeter, LoadRunner, and Gatling.

Designing and executing performance tests.

Analyzing performance test results.

Security Testing Tools (4 hours):

Exploring tools like OWASP ZAP, Burp Suite, and Nessus.

Conducting security scans and vulnerability assessments.

Interpreting security test reports.

Continuous Integration and Testing (3 hours):

Integration of testing tools with CI/CD pipelines (e.g., Jenkins).

Automated testing in a continuous integration environment.

Best practices for CI/CD and testing.

Test Data and Environment Management (2 hours):

Strategies for managing test data.

Configuration management for test environments.

Handling test data privacy and security.

Effective Reporting and Analysis (3 hours):

Generating test reports using testing tools.

Analyzing test results and metrics.

Communicating testing progress and issues to stakeholders.

Real-world Applications and Case Studies (2 hours):

Case studies of successful test automation implementations.

Challenges faced and lessons learned in real-world projects.

Learning Resources and References:

Books:

"Selenium WebDriver: From Foundations to Framework" by Yujun Liang and Alex


Collins.

"Effective Software Test Automation" by Kanglin Li.

Online Courses:

Coursera, Udemy, and LinkedIn Learning offer various courses on specific testing
tools.
Official Documentation:

Explore official documentation for the selected testing tools.

Community Forums and Blogs:

Participate in forums like Stack Overflow, GitHub discussions, and blogs from testing
experts.

Course Outcomes:

Students will gain hands-on experience in using popular testing tools for automation.

Ability to design, execute, and manage automated test cases efficiently.

Understanding when to apply different types of testing tools based on project..

Assessment:

Assignments and Quizzes:

Regular assignments covering practical aspects of test automation.

Quizzes assessing theoretical knowledge.

Midterm Project:

Developing a simple automated testing project using a selected tool.

Final Project:

Comprehensive automation project, integrating multiple testing tools in a practical scenario.

Final Exam:

Comprehensive exam covering theoretical and practical aspects of software testing


tools.

Total Duration: 30 hours

24 hours of lectures and hands-on labs.

6 hours for quizzes, assignments, and exams.

You might also like