url_for takes key-values pairs as argument, for more info refer: http://flask.pocoo.org/docs/api/#flask.url_for
This will work:
@app.route('/courses/new/') # Added trailing slashes. For more check http://flask.pocoo.org/docs/api/#url-route-registrations
def new_course():
# use request.args to fetch query strings
# For example: id = request.args.get('id')
The caller:
return redirect(url_for('new_course', id=int(request.form['id']), code=course_code, sem=semester, year=year, student_id=student_ids))