Retaking Undergrad classes

<p>I am planning to apply to a Computer Science Graduate program. I am currently a junior and I have a 3.6 GPA. I am curious what would be a competitive GPA when applying to Grad Schools. My dream school is probably Carnegie Mellon University. I have done internships at big companies such as Microsoft and I also have research experience in mobile computing(which is what I will mention as my research interest).</p>

<p>This semester I retook a freshman level course which I had initially gotten a B- in. I retook it because the first time around we had 2 professors for the course and the pace of the course and how it was being taught kept changing. It became very hard to follow, so I decided to retake it. I retook it this semester and got only a B+. Would this(i.e retaking a freshmen level course and only getting a B+) hurt my chances of getting into some of the top graduate programs? The course is essentially a Discrete Math course which is being taught in my University's CS department.</p>

<p>One class is unlikely to tank your entire graduate career, especially at the freshman level.</p>

<p>Thanks! I am also curious about what type of research work Graduate schools would be looking for. Would it be hard to get accepted into one of top 5 Grad Schools for CS if I do not have a publication?</p>

<p>So far, I have worked in 2 different research projects. In my first one, I was named in the Acknowledgements section of the research paper which was accepted for presentation at a Conference. The 2nd project might end up giving me a publication with myself being an Author.</p>

<p>Essentially, I have quite a bit of research experience, but I do not have a publication yet.</p>