GIS 540

Syllabus

Course description: Principles, syntax, and language elements associated with creating and running Python programs, Python scripting to process and filter data, perform batch geoprocessing on GIS data, and manipulate map elements, and use script tools to add custom interfaces to ArcGIS applications.

Prerequisites: GIS510 --Students are expected to have a good understanding of ArcGIS Toolbox tools, ArcGIS Desktop software, and ArcGIS Modelbuilder. These skills will not be taught in this course. The student is responsible for independently reviewing any lack of knowledge in these skills.

Educational Approach: The course consists of lectures, readings, in-class exercises, quizzes, homework assignments, exams, and a project. Lectures and in-class practice are intermingled during the class meetings.

Textbook: Python for ArcGIS Hard-back book is available for purchase online.
                  Electronic version available for free to NCSU students free through the library:
                  http://catalog.lib.ncsu.edu/record/NCSU3565981(PDF recommended over eBook)

                  Data and sample scripts to accompany textbook downloadable here: http://go.ncsu.edu/gispy (modified periodically. Please replace if you downloaded it prior to this semester.)

Recommended Python tutorials:

Additional resources:

Software: Python, PythonWin, PyScripter, ArcGIS Desktop 10.*, and Jing.


Exam instructions

This course has one mid-term exam. Local 601 section students should plan a time to take the exam at one of the two local testing centers. Here are the hours and locations:
http://distance.ncsu.edu/testing-services/local-testing.php

Non-local students need to sign up for remote proctoring or make special arrangements with the NCSU testing center to organize a remote proctor near their home. Follow this link for remote testing information:
http://distance.ncsu.edu/testing-services/remote-testing.php

Mid-Exam

The exam covers course content from Chapters 1-11 (including lectures, slides, in-class exercises, and reading) and homework assignments #1-4.

Dates: See schedule
Time Limit: 120 minutes
Allowed Items: Scrap Paper


Quiz instructions

This course has 6-8 quizzes. Students should plan a time to take the timed Moodle quizzes in a quiet location on the day that the quiz is available. The quizzes will generally take 10-20 minutes to complete. Though notes, books, and IDEs will be available, students should be prepared to rapidly respond to the questions. The quiz will be timed with the assumption that the materials have been studied before the start of the quiz. This is a new feature in the course, so some scheduling, timing, or scope adjustments may be required. The instructor will strive to provide ample warning for any such changes.


Message Board:
We are using Piazza for class discussion. Classmates, teaching assistants (TAs), and instructors can view your public posts. Participation in discussions of lectures, in-class exercises, lecture notes, and related current events are encouraged. Public posts can also be used for clarification of homework question instructions.

Use the following guidelines for help with homework-related questions:

  • Post homework-related questions as private messages on the board to the all instructional staff. Rather than sending email, we prefer that you post your questions on Piazza. Teaching staff will not respond to questions sent via email.
  • Private questions that could benefit the entire class may be made public by teaching staff, unless you specify otherwise.
  • For code-related questions, formulate a concise explanation describing the part of the code appears to be causing problems. The speed and helpfulness of responses is strongly tied to the specificity and clarity of the question. Posting an entire script with a note like "I can't figure out why this isn't working", will not yield helpful results.
  • If a script is throwing an error, copy and paste the complete error in the question.
  • Use the 'code' button to preserve code format.

If you have any problems with Piazza or feedback for the Piazza developers, email team@piazza.com.

Find our class page at: https://piazza.com/


Late policy for homework: The assignments are due at 10pm EST on the due date. Moodle submission closes at 10:15pm; The 15 minute grace period is given on Moodle, to allow for last minute blunders, but the assignment is due at 10pm. Assignments submitted at 10:16pm are 16 minutes late. For assignments turned in after the due date, a late penalty is applied to the grade based on the following equation:

penalty = 10*2(r-1)% where r is the number of 24-hour periods late.

The first 24 hour period begins at 10:15pm on the day it is due. If, for example, an assignment is submitted at 10:16pm on the day it was due, 10% will be removed from the grade for that assignment (10*2(1-1) =10*20 = 10*1 = 10%) .

If you have some issue submitting late homework, notify the instructors via a private note on Piazza. Mark the post with the homework number folder and the 'late' folder. ***No email submissions are accepted.***

The only exceptions to the late submission policy are afforded to those with personal emergencies (e.g., illness, death, or medical emergency in the immediate family) with documentation.


Homework guidelines:

  1. All submission deadlines are given in terms of Eastern Standard Time (EST).
  2. Name script file submissions exactly as specified in bold at the beginning of the exercise in the book. Points will be deducted for incorrectly named scripts. E.g., if the name in bold is foobar.py, and you submit a script named 'foobarr.py' instead of 'foobar.py', points will be deducted.
  3. The header comments of each script submitted must include the student name and unity ID. The unity ID is the alpha-numeric code (e.g., jkrowlin). The student ID number (e.g. 300335468) is not used in this class. The naming instructions are designed to streamline the grading process, so this is important for running the class --This means that points will be deducted for not following instructions.
  4. See the "Academic Intregrity" section of the syllabus regarding acceptable forms of help on homework.
  5. Points for homework assignments vary depending on content. Generally, scripts are worth 10 points each and short answer questions are worth 1 or 2 points per part.
  6. Don't zip submissions. Moodle creates a directory for each homework submission. Inside this directory, it automatically creates one folder for each student. All the files submitted by jkrowlin for an assignment are automatically placed in a jkrowlin directory. So, files are already grouped by unity ID.
  7. If you complete an assignment and want to submit it before the Moodle submission for this assignment has opened, post a private message for the instructors on Piazza. This request will be handled as promptly as possible. (No email submissions are accepted.) Submissions are generally not permitted prior to one week before the due date.
  8. In case of tardiness, see the "Late policy for homework" section of the syllabus.

Grading policy: Midterm Exam 30%, Quizzes 30%, Homework 15%, Project 25%

Letter Grade
Score
A+
>= 97.0
93 - 96.99
A-
90 - 92.99
B+
87 - 89.99
83 - 86.99
B-
80 - 82.99
C+
77 - 79.99
73 - 76.99
C-
70 - 72.99
D+
67 - 69.99
63 - 66.99
D-
60 - 62.99
F
<= 59.99

Grade Changes
Students should review grades and comments when they are posted. If a mistake is discovered in any grade received (for example, a correct answer was marked wrong or a score was summed incorrectly), the student should post a private Piazza message to the instructors. The note should indicate which assignment grade is under dispute and explain which part of the work seems to be graded incorrectly. The message must be submitted within one week of the date on which it was returned. After one week, grades are final.


Academic Integrity

Professional student conduct is required throughout the course. Read the NCSU policy overview and Sections 8 and 9 of the Code of Student Conduct and the following instructions:

  1. Academic honesty and homework assignments
    We know the material can be challenging, so you should take advantage of the teaching staff help. Use office hours and the message board to interact with the teaching assistants and instructor when you are struggling with the homework.
    Beyond this, however, students are required to do homework assignments individually. Study groups may discuss code from in-class exercises, code from the course reading, and code from the course slides, but they may not do the homework together. Plagiarism detection software will be used on programming assignments to identify students who have copied code from one another. Copying will not be tolerated. The work you submit must be your own. 

    Examples of cheating are: looking at another student's code, writing your program while talking to someone else about it, talking another student through the solution code, allowing others to look at your solution code, obtaining code from a student who is taking GIS 540 or took GIS 540 during a previous semester, and obtaining code from family, friends, colleagues, or others. Code snippets from the examples provided for class and the ArcGIS Resources help pages may be used; However, copying code from other Internet sources is also considered cheating. Sharing code on the message board or in other ways is a violation of the NCSU Code of Student Conduct. If you have any doubts about what is allowed when completing homework assignments, ask the instructor.

  2. Academic honesty and exams
    Exams must be completed individually. Students must not discuss the exam concepts, questions, or answers until the exams have been returned. Students must take the exams in an approved testing center or with an approved proctor. You should prepare your own exam notes and the work you submit on the exam must be your own. 

  3. Academic honesty and projects
    All students must complete the project alone. Students must not post their code in public notes on the message board or obtain, copy, or look at another student's or former student's pseudocode or source code unless otherwise specified by the instructor. Questions that are deemed useful for the entire class may be converted to public posts.

    Projects are designed to use concepts and skills learned in the class for the bulk of the work in the project. However, a class project may occasionally require a student to solve a problem that goes beyond the scope of the materials taught in the course. In this situation, students may conduct research online to solve these out-of-scope questions. If a code snippet is used for a project, the student must do two things:
    1. Insert comments within the code to site the source of the code, and clearly indicate which lines of code are from this online source.
    2. Research the unfamiliar components of this code and modify the code so that each step can be clearly explained in terms of concepts learned in class. Then, insert comments within the code to explain the purpose of each line of code.
    See the 'Citing a project found code snippet' box below for an example. Citing an outside online source for code that is part of the course material is considered cheating. Code from outside sources should only be used when necessary and should not constitute a large portion of the project code. Also, students should not use code that they can't explain. If you have any doubts about what is allowed, ask the instructor.

    Citing a project code snippet

    Problem: Given a date, I need to find the next day's date in my project code. We didn't go over this in class, so I search online. I search online and find the following example on the Stack Overflow website:

    date = datetime.datetime(2003,8,20,12,4,5)
    for i in range(5):
        date += datetime.timedelta(days=1)
        print(date)

    This code does two steps at once in the third line of code. I separate these lines of code. Next, I read the datatime module documentation to understand the timedelta function. My code only deals with the date (2003, 8, 20), not the date and time (2003,8,20,12,4,5), so I use only the date in my code. I add a comment to acknowledge that the code is not my own. Last, I add a code comment to explain each line of code I use from this source:

    # Thanks to http://stackoverflow.com/questions/3240458/ 
    how-to-increment-the-day-in-datetime-python
    # for the following code: ***
    # Create a datetime object.

    theDate = datetime.date(2014, 8, 20)
    # Use the timedelta function to create a
    # timedelta object containing 1 day.
    day = datetime.timedelta(days=1) # Add a day to the given date. theDate = theDate + day # End of Stack Overflow code snippet ***

Accommodation of students with disabilities: Reasonable accommodations will be made for students with verifiable disabilities.  In order to take advantage of available accommodations, students must register with Disability Services for Students at 1900 Student Health Center, Campus Box 7509, 515-7653.  For more information on NC State's policy on working with students with disabilities, please see the university provisions and policies for disabled students


Attendance policy: This is a very intensive course as you will be learning highly technical skills and learning new ways to conceptualize and analyze GIS problems.  Therefore, I am taking very seriously your instructions to be at every class. If you must miss a class it is your responsibility to make up the material. See also university attendance regulations and university definitions of excused absences.


Class evaluations online: Online class evaluations will be available for students to complete during the last week of class. Students will receive an email message directing them to a website where they can login using their Unity ID and complete evaluations.  All evaluations are confidential; instructors will never know how any one student responded to any question, and students will never know the ratings for any particular instructors. For additional information write to the student help desk:  classeval@ncsu.edu


Audit: Audit students must complete all homework assignments and quizzes/exams with a 70% total average score. That is, they do not have to complete the project.


Mailing list and website: Student NCSU email address will be added or deleted from the course mailing list automatically based on registration status in the course. Instructors can not add an non-NCSU address to the mailing list. Students are responsible for announcements sent to the NCSU email address. Set up mail forwarding, if necessary.

Updates to the online schedule will be made during the semester. Students can subscribe to updates of the course site.


“Withdrawal” and “Incomplete” Polices: Any student who enrolls, but does not complete the course work or process a withdrawal form before the end of the University’s official drop period for the semester will receive a 0, unless they initiate one of the following options:

a. The student is passing and officially drops the course after six weeks. In this case the student will be given a “W”. Passing this course is defined as having earned an average grade in the course of a C or above on the date of the student’s request for the “W”. This option will only be available in keeping with the current NCSU policy.

b. The student receives an “I”. This grade will be given only in special documented circumstances when a student, for some serious reason, cannot complete the course by the required deadline. An “I” will be given only if the student has completed at least 80% of the course. An “I” cannot be used to simply avoid a 0 grade. All work to complete the course must be finished by the end of the next semester or the “I” will be changed to a 0 grade. This option will only be available in keeping with the current NCSU policy.


Withdrawal for Behavior that Interferes with the Instructional Process: Interactions in this class are expected to be professional and courteous. Disruptive behavior, which impedes the teaching/learning process for other students, will not be tolerated. An instructor may withdraw a student for disruptive behavior that is interfering with the instructional process (such as students using portable phones or radios, or harassing faculty or other students on forums or in person). For further information see “Students Rights, Responsibilities, and Conduct” in the NCSU catalog.

Please make sure you fully understand this agreement as you will be held to the entire policy as stated above.