|COP 4338 Summer B 2015 - Programming 3|
Francisco Ortega, Ph.D.
University Park, ECS 263.
Office hours:Tuesday and Thursday from 5:00pm to 6:00pm or by appointment.
Web Site: cis.fiu.edu/~forte007
Web Site: FranciscoRaulOrtega.Com
Lecture time: Tuesday and Thursday 18:30-21:50
Final Exam Date: Last day of class.
Location: ECS 145
Note: Wait until we start class, when I go over the references needed for this class
The Linux Programming Interface by Michael Kerrisk.
Why? While the course draws from many textbooks and other online resources, the one book that contains multiple topics that will be covered in this class is this book.
It is also important to note that the TLPI book contains many linux system information that is relevant for this class, in particular, towards the end of this class (e.g., system calls)
It is recommended that you have access to one C book. There are two suggested options:
The class will try to cover various topics depending on time availability and instructor's discretion. The objective of the class is to teach C programming language and advanced topics, using a Unix/Linux operating System. There are additional topics that may be covered if time allows.
The student is expected to have an understanding of data structures, object-oriented programming, and computer fundamentals. While this class will use linux/unix to work in lots of their problem, the student is not required to know unix/linux but knowing it in advanced of the class may beneficial. In particular, how to edit a file (vim, emacs, or nano), compiled a basic C file (gcc), and do basic operations in the terminals such as directory listing (ls), copying (cp), and moving (mv), among others. Nevertheless, The student will be given enough information to do this. Some students may prefer to edit their homework in their editor of their choice (e.g., Sublime) and then copy the files to a linux/unix server.
If you area already running a unix/linux systems (including macosx, freebsd), you can worked directly in your favorite editor, without the need to use a terminal editor. Nevertheless, it is important that you at least know how to use a basic terminal editor. The nano and vim editors may be the simpler ones to use in the terminal. If you have Windows OS, you may want to install a virtual machine with linux. While there is a way to run unix/linux programs and commands without a virtual machine (using cygwin), it may best to have a VM running. Remember that you can use the school's server to run your code, without the need of anything but a terminal program like putty (windows) or ssh from your linux/macosx machine.
I like to use Sublime editor when using a graphical interface. If you are running your own linux box, then it will be much easier to use eclipse or other IDE to debug if you need it. However, it is also important to know how to debug with gdb and use terminal editors. If you are going to run your own linux machine, use the distribution you like best. I like debian. Nevertheless, your code must compiled and run in ocelot.aul.fiu.edu server. It must compiled with gcc -std=c99 -Wall ...
Two great IDE that work in MAC OsX, Windows, and Linux are: CodeLite and CodeBlocks. It is important to remember that Visual Studio does not have a C compiler (it is a C++ compiler). For compilers, use either gcc or clang. If you are running on macosx on the latest edition, your mac will have clang. Some people prefer NetBeans or Eclipse for C, which is fine. Remember that some of your projects, I will use the command line to compile, so you have to be sure once you are finished with your project that it compiles in gcc.
It is important that you read ahead. This is even more important when you are taking a summer class that last 6 weeks. You are expected to be an more mature student at this point. The instructor is here to help. Please let me know if you have any questions.
The class will start with an introduction to C including memory allocation. I will then move to threads, and network programming. Depending on the time, we will also covered unix/linux systems calls and other topics, such as signals. The list below show a possible outline (not in order) to be covered in this class.
While I provide a list of topics below, the most important topics for this course are: C, Threads, Networking (sockets), and Some Linux Systems calls. Depending on time, I will modified topics.
With additional time, I will try to provide some C++. Note that if you are in a 6 week course, time will go by very quick.
If you have any disability make sure you let me know with time to make any accommodation. Also, please make sure you check the FIU Disability Center web site at : http://drc.fiu.edu I will be more than happy to accommodate any part of this class, based on the recommendation of DRC.
Incomplete grades are not a way to get more time to finish the course because of course load or to “repeat” the course. I will be very strict when it comes to giving incomplete. In most cases, I will not issue an incomplete. I will only approved the Incomplete if the conditions explained below are met:
The conditions that must be met, in addition with FIU Incomplete Grade Policy are: the student must have a passing grade at the moment that it request the “I” grade; The incomplete will be only issue if is due to a documented event that prevents the student from continuing the semester. The student must finished within 2 semester. I will use my discretion to give incompletes.
How to do well in this class (applies to all classes)
The following items are what I found during my studies to help me. Maybe some will help you
You will need to submit your homework via moodle. When submitting homework to moodle, you will need to upload ONE compress file (zip,rar) with the following format: LastName_FirstName_PantherID_HW#.zip (or .rar) Each homework will stay if you need to print out the homework or not before coming to class.
CLASS READING MATERIAL:
Some slides were borrowed from C Programming A Modern Approach.Some of the material has also been borrowed from the C Programming Language book by Kernighan and Ritchie. In most cases, I have tried to place the copyright of the corresponding author. If you think is missing, please let me know. However, the content has been modified. The power points sometimes make sense only with the lecture. Use freely, but make sure to add the correct copyright if missing. Finally, you will notice the material from C Programming Language because they are screenshots from scans that I did from the book.
Go to moodle for lectures