CS 253: Software Development and Operations
Credits: 3-0-3-12
Instructor:
Dr. Sandeep K. Shukla / Dr. T. V. Prabhakar /Dr. Indranil Saha/Dr. Biswabandan Panda/Dr. Debadatta Mishra/Dr. Preeti Malakar/Dr. Amey Karkare
Major, Measurable Learning Objectives
Having successfully completed this course, the student will be able to:
- Learn how to develop large scale software from scratch
- Develop a full-fledged software development environment with knowledge of utilities such as shell scripting make file creation, regular expression tools, and other development tools such as autoconfiguration tools
- Develop testing harnesses and testing techniques including unit testing, integration testing, and system level testing
- Develop deployment environments, and software maintenance tools, and updating tools
- Practice defensive and secure programming with awareness of various vulnerabilities at the code level, software design level, architecture level
- Use software libraries in large scale software development - networking libraries, data base connectivity libraries, and GUI libraries etc.
- Develop software design documents and test documents
Prerequisites and Co-requisites: ESC 101, ESO 207
Texts and Special Teaching Aids
Course notes, lecture slides, man pages, and other documentations will be provided to students by the instructor. Self-study would be an important component of this course.
Syllabus
The students will be exposed to the following topics:
- Regular Expression Tools (e.g Awk)
- Lex and Yacc
- Bash Scripting
- Basic Perl, Python or Ruby Scripting
- Make File Details and Autoconfiguration tools, gdb
- Object Oriented Programming (C++ or Java)
- Unit Testing Tools and Techniques
- Integration and System Level Testing Techniques
- Software Requirements Analysis, Requirements Generation, Documentation
- Software Architecture, Functional, Performance and Security Specification
- Software Design with Object Oriented Design Techniques, Design Documentation
- Implementation techniques with defensive programming and secure programming techniques
- Unit testing
- Development and Integration and System Testing, Test Automation
- Deployment Issues and Maintenance issues
- Software Quality Metrics and measurements
The course will consist of 3 hours of lectures per week, projects and homework, and a course project.