No, don't abandon Java! C and Java are similar in syntax so you should not have a problem there. It will be taking a step back as far as OO goes and many other improvements that Java made over C but stick with Java. I wrote C code for a few years before I started using Java and I found Bruce Eckel�s, Thinking in Java, very helpful. It�s meant to take a C programmer into Java but you may find it helpful going the other direction too since it points out the major/minor differences along the way. Try and look at it as reverse engineering
I worked with C for years and even pioneered an early C++ compiler product. Nonetheless, if they're planning to teach basic CS using C, I'd be worried. C is a language full of tricks. For basic algorithm learning, you don't want to be learning language tricks, you want to be learning about the algorithms themselves.
Now that Java implementations rival C for execution speed, I almost never code in C. Java's feature set (e.g. standard classes) is much, much richer, and there's less temptation to use language tricks to accomplish things.
However there is still a place for C. Places where a JVM environment isn't appropriate or perhaps even possible. Like OS kernels and device drivers or low-level access to I/O devices and system services. So to be a real CS heavyweight, you really ought to know Java AND C.
Sources may include data from the Fakebook Research Foundation with support from Gargle University
Computer science is a set of ideas about mathematical relations. Practically speaking, these releations are often expressed and made useful through programming. Most CS programs employ one of more languages to provide a concrete medium in which students can work with these ideas. E.g. a stack is an interesting concept, but it feels more real when you start poping things off of one rather than just looking at some markings on a blackboard.
Your school has choosen C as the medium. Learn it. Learn Java, too (well, it looks like you already have). The languages are not mutually exclusive. Most of the concepts you know from Java will apply to C. You need to learn pointers, but it's not that hard. The only other tricky part is that C is proceedural, not OO-but I suspect it's easier to go this was than from proceedural to OO.
So don't give up on Java, even if you don't use it much for a year or so. I'm sure you'll use it in the future, and knowledge of C can only help you.
Mark Herschberg, author of The Career Toolkit
IMO languages are a fairly small part of the big IT puzzle. You should know at least 2 or 3 after graduating from a post-secondary school. And depending on what you do after you graduate, you'll probably pick up a few more. Is the curriculum all C? or is C for the intro courses?
You should pick a language to focus on that is job-worthy: and take some advanced courses in it. For instance, I would tell someone it's fine to take an intro C course... but I'd also recommend an intro Java course over an advanced C course because I find that I'm rarely using C anymore in the work-place.
Also, as Mark pointed out, programming languages are often used as the vocabulary for algorithms and mathematical/IT concepts. In those cases, the language is really irrelevant. It's the concept that you need to grasp -- not the syntax.
I made much C language, for about 6 years, it is an excellent language but of 2nd geneation, so just above assembly language, but still very close to machine (you access directly to memory areas through "pointers"). Yes, C is full of tricks but it is fast, simple, and exists on all platforms, so don't hesitate to learn it at school if you need it.It is an excellent language but loosy typed and low level (not object oriented at all).
But modern development is object oriented and Java (or $Soft's copy C#) is the best language to learn for an awful lot of good reasons. If you want to find a job you need Java so you simply need it. It is best high level language available right now.
Your shcool is right to carry on learning C for in Computer Science you learn about hardware ALU, registers, DMA, ..., so near machine C is perfect. But computers are used to develop software and modern development relies on object oriented models which are not longer tied to machine, best proof is that Java VM defines his own primitive data types so as to run the same way of any platform thanks to adapted runtime. So C and Java philosophies are totally different but both are excellent and useful.
In conclusion learn both, C for school and Java for work, simply don't forget their philosophy (low level near machine, high level object oriented). But think immediately about Java certs because as you have none in your scholarship you will need some acknowledgement.
CNAM IT Engineer, MS/CS (RHCE, RHCX, SCJA, SCJP, SCJD, SCWCD, SCBCD, SCEA, Net+)
Free Online Tutorials: http://www.free-tutorials-online.net/
"All students will be introduced to a range of modern programming paradigms, including procedural programming (e.g. C), object oriented programming (egC++), functional programming (e.g. Haskell), and logic programming (e.g.Prolog)."
After learning the above programming paradigms, learning Java will be anything but hard. After all, the syntax (like others also mentioned) is very similar - it's the way you think and the way you solve problems that matters.
I took C, C++ and Java in school, I got A+ on all those courses, but I didn't know even 50% of what I needed to be able to get a normal job. So, I think no matter what you learn in school, you should do 3 times more work than what school requires. Go to Monster.com, see what's hot out there, and if your school doesn't offer it, learn it yourself, buy a book and read it. You will never find school that teaches you all the hot stuff, because then it wouldn't be a school, it would be one of those expensive courses. School is suppose to give you a base logic, teach you how to think, so that you can move on on your own. Get certified, it will be a good proof that you are at a level recent grad should be. I really believe it is very important to understand pointers even prior to learning Java, and you will learn them taking C, C++ or data structures with C. Yes, it is tricky and may be little hard to write linked list in C, but now you will know how Java's collections are built. I realized it is much easier to learn programming stuff if things make sence. Knowing C's pointers will explain lot of Java's tricks.
One tip on learning any language - learn it so that you can teach a class 5 moths later. Make everything clear, it may take time to understand OO related stuff, but some day it will become easier than simple math. Take your time, if you have to write 100 small programs to test everything about, for example, Polymorphism - do it! Even if it will take 3 sleepless nights, you won't regret it.