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
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
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:
- 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.
- 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.
- 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.
- 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.