CISW 126 Intermediate Programming*
	Students will explore a series of topics intended to introduce more complex software development principles, such as object-oriented programming, inheritance, and exception handling. Students will also explore related tools and techniques used by many professional software developers, including version control, unit testing and development methodologies. 
	
		
			CISW 126Intermediate Programming*
		
	Please note: This is not a course syllabus. A course syllabus is unique to a particular section of a course by instructor. This curriculum guide provides general information about a course.
		I. General Information
	
		
			Department
		
Information Technology
	 
		II. Course Specification
	
		
			Course Type
		
			Program Requirement
		
	 
		
			Credit Hours Narrative
		
			3 Credits
		
	 
		
			Semester Contact Hours Lecture
		
			45
		
	 
		
			Prerequisite Narrative
		
			CISW 125
		
	 
		
			Grading Method
		
			Letter grade
		
	 
		III. Catalog Course Description
	
		Students will explore a series of topics intended to introduce more complex software development principles, such as object-oriented programming, inheritance, and exception handling. Students will also explore related tools and techniques used by many professional software developers, including version control, unit testing and development methodologies. 
	 
		IV. Student Learning Outcomes
	
		Upon completion of this course, a student will be able to: 
			- Demonstrate effective use of the procedural programming and code construction techniques you have learned thus far. 
- Engage and solve advanced programming tasks that grow beyond those solved in introductory programming. 
- Demonstrate the understanding and effective use of complex programming concepts. Examples:  a.	Object-oriented programming  b.	Error handling (exceptions)  c.	Unit testing 
- Discover and implement industry best practices and tools for creating & working with code. 
- Explore and assess best practices for modularizing code, and the use of other contributors' code. 
 
		V. Topical Outline (Course Content)
	
		Design solutions to programming projects that demonstrate the understanding and effective use of the following programming concepts:
Object-oriented programming (classes)
Inheritance
Exceptions
Unit Testing
Explore computer programming as an industry, and investigate industry best practices and tools, including:
Version control (such as Git)
Programming IDEs (such as JetBrains tools, Eclipse, etc.)
Development methodologies (such as Agile)
Functional programming
Explore and assess best practices for the use of the use of common supporting libraries and code modules. These could* include:
Graphical interface toolkits
Environment management tools (such as virtualenv for python)
Web frameworks
	 
		VI. Delivery Methodologies