Differences between revisions 27 and 72 (spanning 45 versions)
Revision 27 as of 2015-01-29 15:31:51
Size: 1294
Editor: scot
Comment:
Revision 72 as of 2024-08-30 13:01:26
Size: 5764
Editor: scot
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
Line 5: Line 4:
|| '''Fall Classes''' || '''Winter Classes''' ||
|| CPTE 230 WindowsAdministration || CPTR-319 DatabaseManagementSystems ||
|| CPTR-328 PrinciplesOfNetworkingCourse || CPTR-427 NetworkSecurity (Odd Only) ||
|| CPTR-432 ManagingAndProgrammingMobileApplications (Even Only) || CPTR-521 AdvancedDatabaseSystems (Even only) ||
|| CPTR-541 NetworkSecurityAndCryptography (Odd Only) || CPTR-575 IssuesInComputerScienceAndReligion ||
The general Syllabus is found at StandardSyllabus

||'''Fall Classes''' ||'''Winter Classes''' ||
||CPTR 230 WindowsAdministration ||CPTR-319 DatabaseManagementSystems ||
||CPTR-328 PrinciplesOfNetworkingCourse ||CPTR-427 NetworkSecurity (Every year starting in 2021) ||
||CPTR-519 DatabasesAndDataWarehouses ||CPTR-521 AdvancedDatabaseSystems (Even only) ||
||CPTR-444/544 OffensiveSecurity (Odd Only) ||CPTR-575 IssuesInComputerScienceAndReligion (Odd Only) ||
||CPTE-300 ChristianServiceInComputing POI || CPTE-300 ChristianServiceInComputing POI ||
|| || CPTR-386 TechnicalWritingInComputing ||
|| || CPTR-446/546 WebServices (Even Only) ||

* POI = Permission of Instructor

Not currently teaching: CPTR 432 ManagingAndProgrammingMobileApplications

If you need a virtual machine try: Send a request to Dr. A
Line 12: Line 22:

See also CaptureTheFlag
Line 14: Line 27:
GeneralIdeasToImplementInAllClasses

== Creating Videos for Assignments ==
In several of my classes, students are required to create video screen captures to turn in as assignments. Videos must follow the guidelines in LabVideos.
Line 15: Line 33:
Line 22: Line 39:
 * [[https://www.southern.edu/mckee-library/Help-Services/Grammarly.html|Grammarly is free to all Southern Students]]
 * [[http://southern.libguides.com/content.php?pid=171766&sid=5590609|Library Link: to Computing Research Guide]]
 * [[https://www.seguetech.com/the-four-levels-of-software-testing/|Excellent article describing Testing]]
Line 25: Line 44:

The SAU School of Computing has resources listed at [[http://www.southern.edu/cs/resources/Pages/variousresources.aspx]]. 
The SAU School of Computing has resources listed at http://www.southern.edu/cs/resources/Pages/variousresources.aspx.
Line 29: Line 47:
Line 32: Line 49:
 * [[https://youtu.be/AAgWhnf_p3k|Inkscape drawing tutorial]]
 * [[https://github.com/lukasz-wronski/vscode-ftp-sync|I've started use Visual Studio Code for remote projects]]. Works great for html/php etc.

= Approaches to solving Computer Problems =

There are really two types of problems in Computer science. First, there is the kind you program a solution to. It has complexity that must be dealt with or you will soon pull your hair out trying to figure out what it is you did or are doing or yet need to do. The second kind of problem is one you are trying to find the cause of, and then find a solution to. These are usually found in systems and relate to configurations or hardware problems.

== Dealing with complexity when developing Solutions ==

To deal with complexity you will often employ one or more of the following concepts:

|| Abstraction || Abstraction removes concerns about the internal details of software components and presents just what is essential for understanding and use. ||
|| Modularity || Modularity is an implementation that supports interchangeable components. ||
|| Layering || Layering is a common technique that provides progressive abstraction and implementation. E.g. the OSI Layer ||

== Approaches to Finding and Fixing Configuration, Hardware, and Software Problems ==

To find the cause and fix configuration and hardware problems, you can approach the problem using these three techniques:

 1. Use a Knowledge Base - It could be Google, but it may be your own companies wiki or some other documentation source. Find it in the knowledge base and following the instructions to fix it. This is the easiest, fastest and will solve most of your problems.
 1. Follow the path - This is a bit harder because you may not know the path. I frequently find myself following the path of some errant connection in the data center. Sometimes its just a bad wire, sometimes a student has moved a wire without telling me. For network issues a loop-back test may be in order (e.g. in the simplest case ping), in other cabling situations, you could try Frogging. This method works well for systems that must communication, and where communication is breaking down. It also works well in processes that require sequential actions. It requires more work and it is a bit better in its success rate too.
 1. Simplify the problem - Often times it helps to take a complex problem and test it in its simplest form. E.g. For IT: in one assignment students were required to add a user to Active Directory with several properties set. This could be done in a single statement which is SOP. However, it failed with an error that was less than helpful in discovering the cause of the failure. Simplifying this problem involved just creating the user without additional properties. Then add the properties one by one until the error appears, thus revealing the faulty cause. CS: programmers do this all the time with modularity, unit testing, and using a debugger to step through the program while using watches.
 1. Hypothesis testing - Now we are talking hard work. This is science at its core: you hypothesize a cause and develop a way to test your hypothesis. You might be right in your hypothesis, but it may not be complete. Think of problems that manifest themselves from multiple causes. Although its the hardest, it is also the most successful method. It also takes the longest. So start at the top and work your way down to here as a last resort.

More information can be found in the slides of the CPTE 230 Windows Administration class.

Classes

Look for all class information plus tips, tricks and FAQs here!

The general Syllabus is found at StandardSyllabus

Fall Classes

Winter Classes

CPTR 230 WindowsAdministration

CPTR-319 DatabaseManagementSystems

CPTR-328 PrinciplesOfNetworkingCourse

CPTR-427 NetworkSecurity (Every year starting in 2021)

CPTR-519 DatabasesAndDataWarehouses

CPTR-521 AdvancedDatabaseSystems (Even only)

CPTR-444/544 OffensiveSecurity (Odd Only)

CPTR-575 IssuesInComputerScienceAndReligion (Odd Only)

CPTE-300 ChristianServiceInComputing POI

CPTE-300 ChristianServiceInComputing POI

CPTR-386 TechnicalWritingInComputing

CPTR-446/546 WebServices (Even Only)

* POI = Permission of Instructor

Not currently teaching: CPTR 432 ManagingAndProgrammingMobileApplications

If you need a virtual machine try: Send a request to Dr. A

Cengage Instructor Page

See also CaptureTheFlag


GeneralIdeasToImplementInAllClasses

Creating Videos for Assignments

In several of my classes, students are required to create video screen captures to turn in as assignments. Videos must follow the guidelines in LabVideos.

Computing Research and Writing Resources

The following two links provide access to all of Dr. A's research and writing resources.

Rubrics

The SAU School of Computing has resources listed at http://www.southern.edu/cs/resources/Pages/variousresources.aspx.

General Tools

Approaches to solving Computer Problems

There are really two types of problems in Computer science. First, there is the kind you program a solution to. It has complexity that must be dealt with or you will soon pull your hair out trying to figure out what it is you did or are doing or yet need to do. The second kind of problem is one you are trying to find the cause of, and then find a solution to. These are usually found in systems and relate to configurations or hardware problems.

Dealing with complexity when developing Solutions

To deal with complexity you will often employ one or more of the following concepts:

Abstraction

Abstraction removes concerns about the internal details of software components and presents just what is essential for understanding and use.

Modularity

Modularity is an implementation that supports interchangeable components.

Layering

Layering is a common technique that provides progressive abstraction and implementation. E.g. the OSI Layer

Approaches to Finding and Fixing Configuration, Hardware, and Software Problems

To find the cause and fix configuration and hardware problems, you can approach the problem using these three techniques:

  1. Use a Knowledge Base - It could be Google, but it may be your own companies wiki or some other documentation source. Find it in the knowledge base and following the instructions to fix it. This is the easiest, fastest and will solve most of your problems.
  2. Follow the path - This is a bit harder because you may not know the path. I frequently find myself following the path of some errant connection in the data center. Sometimes its just a bad wire, sometimes a student has moved a wire without telling me. For network issues a loop-back test may be in order (e.g. in the simplest case ping), in other cabling situations, you could try Frogging. This method works well for systems that must communication, and where communication is breaking down. It also works well in processes that require sequential actions. It requires more work and it is a bit better in its success rate too.
  3. Simplify the problem - Often times it helps to take a complex problem and test it in its simplest form. E.g. For IT: in one assignment students were required to add a user to Active Directory with several properties set. This could be done in a single statement which is SOP. However, it failed with an error that was less than helpful in discovering the cause of the failure. Simplifying this problem involved just creating the user without additional properties. Then add the properties one by one until the error appears, thus revealing the faulty cause. CS: programmers do this all the time with modularity, unit testing, and using a debugger to step through the program while using watches.
  4. Hypothesis testing - Now we are talking hard work. This is science at its core: you hypothesize a cause and develop a way to test your hypothesis. You might be right in your hypothesis, but it may not be complete. Think of problems that manifest themselves from multiple causes. Although its the hardest, it is also the most successful method. It also takes the longest. So start at the top and work your way down to here as a last resort.

More information can be found in the slides of the CPTE 230 Windows Administration class.

ClassesPage (last edited 2024-08-30 13:01:26 by scot)