Syllabus
Course Objectives
- Explain the common characteristics of scripting languages and be able to differentiate them from systems languages
- Apply regular expressions to tokenize and validate data in a variety of languages
- Author shell scripts to automate workflows by leveraging UNIX utilities
- Utilize R to solve a wide range of statistical and numerical problems
- Understand the nuances and differences in a web based environment as compared to more traditional environments
- Employ JavaScript as a general purpose web-based client-side scripting language
- Define and develop Ajax applications and understand how different Ajax applications are from traditional web applications
- Utilize a variety of languages to develop interactive web applications
Class participation
Education works better when we're all actively engaged in it. It's more effective and more interesting when there are questions, comments, challenges, and occasional rants.
Exams and quizzes
We will have a quiz for each major topic in the course in class and a comprehensive final examination.
Homeworks and Projects
There will be 5 programming projects in the course. Each project will consist of several small problems to solve.
Textbook
There is no required textbook for this course. Many online resources exist for the topics we are studying, and will be linked to in both the lectures as well as in the schedule below.
Online Resources
This course will use Blackboard to record grades as well as send important announcements to the whole class. We will also use Piazza as our main discussion forum.
To join the Piazza for this class, sign up at
https://piazza.com/umbc/spring2018/cmsc433.
Programming assignments will be submitted through GitHub Classroom, which will be covered when the first programming assignment is assigned. All lecture content and assignments will be hosted on the course website.
Expectations
Unless otherwise specified, all assignments are to be turned in by midnight on the day they are due (which is given in the schedule). It is your responsibility to contact the instructor in advance if this will not be possible. There will be
a penalty for every day an assignment is late. Students are expected to adhere to all university policies regarding student conduct, academic and otherwise, as posted on the University web site and in the Student Handbook. Academic dishonesty
of any kind will be handled in accordance with University policy.
Regular class attendance is expected.
Grading Policy
Semester grades will be based on the following components. The percentages are initial estimates and subject to change to reflect the actual number and complexity of the quizzes, homework assignment and projects.
- Homework and programming assignments: 68%
- Regular Expressions 8%
- Shell Scripting 15%
- R 15%
- Web + JavaScript 15%
- PHP 15%
- Quizzes 16% (Best 4 of 5)
- Final exam 16%
Assignments
We will have several programming and homework assignments. Doing these is critical to learning the material. Consequently, your performance on these assignments will count towards about 68% of your grade. Homework assignments will have a strict due date and penalties will be applied for late homeworks according to the following scale.
Each student will be given 3 free late days to be used at their discretion on the short projects throughout the semester. You may choose to use all 3 late days on a given project, or split them up among several projects the choice is yours. To claim free late day you must email the instructor before the assignment is due, with the subject line "LATE DAY CMSC 433 <ASSIGNMENT_NAME>" asking to use a free late day. Because of the high volume of these emails, do not expect a response. If you wish you ask a question at the same time, please send two separate emails. If you wish to utilize an additional free late day, you must request an additional free late day via email before midnight. Late days will be recorded on Blackboard, and will be incremented when the corresponding assignment is being graded. (Idea from Daniel Hood)
- -10% one day late
- -20% two days late
- -30% three days late
- -40% four days late
- -100% homeworks more than 4 days late will receive a 0
Counseling Center Resources
Diminished mental health can interfere with optimal academic performance. The source of symptoms might be related to your course work; if so, please speak with me. However, problems with other parts of your life can also contribute to decreased academic performance. UMBC provides cost-free and confidential mental health services through the Counseling Center to help you manage personal challenges that threaten your personal or academic well-being.
Remember, getting help is a smart and courageous thing to do -- for yourself and for those who care about you. For more resources get the Just in Case mental health resources Mobile and Web App. This app can be accessed by clicking: http://counseling.umbc.edu/justincase
The UMBC Counseling Center is in the Student Development & Success Center (between Chesapeake and Susquehanna Halls). Phone: 410-455-2472. Hours: Monday-Friday 8:30am-5:00pm.
Student Disability Services (SDS)
UMBC is committed to eliminating discriminatory obstacles that may disadvantage students based on disability. Services for students with disabilities are provided for all students qualified under the Americans with Disabilities Act (ADA) of 1990, the ADAAA of 2009, and Section 504 of the Rehabilitation Act who request and are eligible for accommodations. The Office of Student Disability Services (SDS) is the UMBC department designated to coordinate accommodations that would allow students to have equal access and inclusion in all courses, programs, and activities at the University.
If you have a documented disability and need to request academic accommodations, please refer to the SDS website at sds.umbc.edu for registration information and to begin the process, or alternatively you may visit the SDS office in the Math/Psychology Building, Room 212. For questions or concerns, you may contact us through email at disAbility@umbc.edu or phone (410) 455-2459.
If you require accommodations for this class, make an appointment to meet with me to discuss your SDS-approved accommodations.
Statement on Respect
Students in this class are encouraged to speak up and participate during class meetings. Because the class will represent a diversity of individual beliefs, backgrounds, and experiences, every member of this class must show respect for every other member of this class.
From CSU, Chico's Office of Diversity and Inclusion
Academic Integrity
UMBC Statement of Academic Integrity
By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism,
and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal.
Academic Integrity Tips
Here is some guidance on what we expect from you. Some of this was adopted from David Matuszek's policies at UPenn.
You may:
-
Discuss the assignments with one another.
-
If you don't understand something about the assignment, ask.
-
The best people to ask are the instructor and TA, but there is no harm in talking to other students about the assignments.
-
Help others debug their work.
-
Sometimes other people will notice immediately something that you have spent hours trying to find. Maybe they've had the same problem. Being "stuck" for long periods is not a good way to learn.
-
More often than not, your errors become obvious when you try to explain your program to someone else. The other person doesn't even have to be a programmer; in fact, it's probably better if they aren't a programmer. It's often said that explaining your
program to your dog can be a big help.
-
If you help someone else, don't overdo it--don't write their program for them. Help them understand their errors and how to fix them, but don't do it for them. Teach them how to catch a fish rather than buying them a flounder and cooking it with a white
wine sauce.
-
If someone is helping you, do not let them take a copy of your program. Not everyone is honest.
-
Use, without attribution, anything we post to the Web.
-
If we post it, it's so that you can use it. We will know where it came from.
-
However, it's an important habit in general to give credit to any source that you "borrow" code from -- it's the honest thing to do
You may not:
- Work together on the same program.
- We emphasize this one because this is where we always hear, "but I didn't understand."
- Talking about the program is fine, but when it comes to writing the program, do it by yourself.
- Writing programs jointly is unacceptable. You will very probably be caught and that will be grounds for failing the course.
- If you write a program jointly and try to hide the fact by making cosmetic changes, this will be regarded as further evidence that you know the rules and are being deliberately dishonest.
- Working together may be acceptable in your home culture, and it is usually encouraged in business; it but working together is not acceptable in this educational system.
- If you discuss your assignment extensively with another student, and make reasonably detailed plans about how you will do it, and then go off and each write each program separately, you will be surprised at how different
they turn out. We have never had a problem with programs that were "accidentally" the same.
- Copy another's code.
- If you copy someone else's program -- even just a part of it -- that fact will be noticed.
- Allow your code to be copied. Fair or not, this is the rule.
- If you and someone else turn in the same program, both of you are guilty, regardless of who did the actual work.
- Lend your code to someone else.
- There is no good reason to do this, and if they copy your program, you are at fault.
- Leave your code lying around where someone else may copy it.
- Please be careful with your disks, flash drives and your program listings. Please.
- If you lose a disk, just tell us. Tell us right away. So long as we know about it before we discover that someone else has turned in the same program, you won't be in any trouble.
- Use any code from textbooks or the Web without our permission.
- Let's be clear. There is no problem with looking up how to do something, and copying two or three lines to, say, open a file, or create a Frame. Even an entire method of, say, ten lines, should be OK -- particularly if
it's a general-purpose thing that might be used in a lot of different programs.
- Finding code that does a significant part of your assignment, and using it, particularly if you use it without attribution, is a violation.
- For the most part, it should be pretty obvious what is assignment-specific and what is general-purpose. If in doubt, ask me.
- Have someone else write your program for you.
- This one is pretty obvious.
If you think you may have accidentally broken a rule, come and talk to us about it. You will be much better off than if we discover it ourselves.
Email Policy
I get a lot of email, to help ensure better communication between everyone, please adhere to the following policies
- Include "CMSC 433" (all caps) in the subject
- Don't include source code in email, instead commit what you have to GitHub
- I will make every attempt to respond with in 24 hours. If I do not respond with in 48 hours (excluding weekends) please send me a gentle reminder
Office Hours Policies
Office hours are an invaluable resource for getting help in this course. If your schedule doesn't work with my office hours, email me, or just stop by and see if I am there, I still want to help you!
To make office hours more effective for everyone, please have a specific question or questions in mind to ask. Bring your work with you so I can see what you have already tried. This will help me help you efficiently while ensuring that everyone can meet with me who needs to. If you don't know where to start, that is a valid question! Please stop by and chat.